// Copyright (c) 2017-2025 Tencent. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//    http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

package v20190725

import (
    tcerr "github.com/tencentcloud/tencentcloud-sdk-go-intl-en/tencentcloud/common/errors"
    tchttp "github.com/tencentcloud/tencentcloud-sdk-go-intl-en/tencentcloud/common/http"
    "github.com/tencentcloud/tencentcloud-sdk-go-intl-en/tencentcloud/common/json"
)

type AddNodeList struct {
	// Roles of nodes to be added.
	//  - SECONDARY: Mongod node.
	//  - READONLY: read-only node.
	//  - MONGOS: Mongos node.
	Role *string `json:"Role,omitnil,omitempty" name:"Role"`

	// AZ corresponding to the node. For the currently supported AZs, see [Regions and AZs](https://www.tencentcloud.comom/document/product/240/3637?from_cn_redirect=1).
	// - Single AZ: All nodes are in the same AZ.
	// - Multiple AZs: The current standard specification involves three AZs. The primary and secondary nodes are not in the same AZ. Note: AZs corresponding to the nodes to be added should be specified. After addition, the number of nodes in any 2 AZs should be greater than that in the third AZ.
	Zone *string `json:"Zone,omitnil,omitempty" name:"Zone"`
}

// Predefined struct for user
type AssignProjectRequestParams struct {
	// Instance ID list. Log in to the [TencentDB for MongoDB console](https://console.cloud.tencent.com/MongoDB) and copy the instance ID from the instance list.
	InstanceIds []*string `json:"InstanceIds,omitnil,omitempty" name:"InstanceIds"`

	// Project ID, the unique ID of the project created by the user. Go to the [project management](https://console.cloud.tencent.com/project) area of the account center in the console to copy the project ID.
	ProjectId *uint64 `json:"ProjectId,omitnil,omitempty" name:"ProjectId"`
}

type AssignProjectRequest struct {
	*tchttp.BaseRequest
	
	// Instance ID list. Log in to the [TencentDB for MongoDB console](https://console.cloud.tencent.com/MongoDB) and copy the instance ID from the instance list.
	InstanceIds []*string `json:"InstanceIds,omitnil,omitempty" name:"InstanceIds"`

	// Project ID, the unique ID of the project created by the user. Go to the [project management](https://console.cloud.tencent.com/project) area of the account center in the console to copy the project ID.
	ProjectId *uint64 `json:"ProjectId,omitnil,omitempty" name:"ProjectId"`
}

func (r *AssignProjectRequest) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *AssignProjectRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "InstanceIds")
	delete(f, "ProjectId")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "AssignProjectRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type AssignProjectResponseParams struct {
	// Lists async task ids returned.
	FlowIds []*uint64 `json:"FlowIds,omitnil,omitempty" name:"FlowIds"`

	// The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
	RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"`
}

type AssignProjectResponse struct {
	*tchttp.BaseResponse
	Response *AssignProjectResponseParams `json:"Response"`
}

func (r *AssignProjectResponse) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *AssignProjectResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

type BackupDownloadTask struct {
	// Task creation time.
	CreateTime *string `json:"CreateTime,omitnil,omitempty" name:"CreateTime"`

	// Backup file name.
	BackupName *string `json:"BackupName,omitnil,omitempty" name:"BackupName"`

	// Shard name.
	ReplicaSetId *string `json:"ReplicaSetId,omitnil,omitempty" name:"ReplicaSetId"`

	// Backup data size, in bytes.
	BackupSize *int64 `json:"BackupSize,omitnil,omitempty" name:"BackupSize"`

	// Task status.
	// - 0: wait for execution.
	// - 1: downloading.
	// - 2: download completed.
	// - 3: download failed.
	// - 4: wait for retry.
	Status *int64 `json:"Status,omitnil,omitempty" name:"Status"`

	// Task progress percentage.
	Percent *int64 `json:"Percent,omitnil,omitempty" name:"Percent"`

	// Duration, in seconds.
	TimeSpend *int64 `json:"TimeSpend,omitnil,omitempty" name:"TimeSpend"`

	// Download link for backup data.
	Url *string `json:"Url,omitnil,omitempty" name:"Url"`

	// Backup method.
	// - 0: logical backup.
	// - 1: physical backup.
	// - 3: snapshot backup.
	// **Note**:
	// 1. The General Edition instance supports logical and physical backup. The Cloud Disk Edition instance supports physical and snapshot backup, but does not support logical backup currently.
	// 2. Physical backup is not supported when storage encryption is enabled for the instance.
	BackupMethod *int64 `json:"BackupMethod,omitnil,omitempty" name:"BackupMethod"`

	// Specified remarks for initiating backup tasks.
	BackupDesc *string `json:"BackupDesc,omitnil,omitempty" name:"BackupDesc"`

	// Region information.
	Region *string `json:"Region,omitnil,omitempty" name:"Region"`

	// Bucket information.
	Bucket *string `json:"Bucket,omitnil,omitempty" name:"Bucket"`
}

type BackupDownloadTaskStatus struct {
	// Shard name.
	ReplicaSetId *string `json:"ReplicaSetId,omitnil,omitempty" name:"ReplicaSetId"`

	// Current status of the task.
	// - 0: wait for execution.
	// - 1: downloading.
	// - 2: download completed.
	// - 3: download failed.
	// - 4: wait for retry.
	Status *int64 `json:"Status,omitnil,omitempty" name:"Status"`
}

type BackupInfo struct {
	// Instance ID.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Backup method.
	// - 0: automatic backup.
	// - 1: manual backup.
	BackupType *uint64 `json:"BackupType,omitnil,omitempty" name:"BackupType"`

	// Backup file name.
	BackupName *string `json:"BackupName,omitnil,omitempty" name:"BackupName"`

	// Backup task remarks.
	BackupDesc *string `json:"BackupDesc,omitnil,omitempty" name:"BackupDesc"`

	// Backup file size, in KB.
	BackupSize *uint64 `json:"BackupSize,omitnil,omitempty" name:"BackupSize"`

	// Backup start time.
	StartTime *string `json:"StartTime,omitnil,omitempty" name:"StartTime"`

	// Backup end time.
	EndTime *string `json:"EndTime,omitnil,omitempty" name:"EndTime"`

	// Backup status.
	// - 1: backing up.
	// - 2: backup successful.
	Status *uint64 `json:"Status,omitnil,omitempty" name:"Status"`

	// Backup method.
	// - 0: logical backup.
	// - 1: physical backup.
	// - 3: snapshot backup.
	// **Note:**
	// - The General Edition instance supports logical and physical backup. The Cloud Disk Edition instance supports physical and snapshot backup, but does not support logical backup currently.
	// - Physical backup is not supported when storage encryption is enabled for the instance.
	BackupMethod *uint64 `json:"BackupMethod,omitnil,omitempty" name:"BackupMethod"`

	// Backup record ID.
	BackId *int64 `json:"BackId,omitnil,omitempty" name:"BackId"`

	// Backup deletion time.
	DeleteTime *string `json:"DeleteTime,omitnil,omitempty" name:"DeleteTime"`

	// Cross-region backup region.
	BackupRegion *string `json:"BackupRegion,omitnil,omitempty" name:"BackupRegion"`

	// Rollback time supported by the backup.
	RestoreTime *string `json:"RestoreTime,omitnil,omitempty" name:"RestoreTime"`
}

type ClientConnection struct {
	// IP address of the connected client.
	IP *string `json:"IP,omitnil,omitempty" name:"IP"`

	// Number of connections corresponding to the client IP address.
	Count *uint64 `json:"Count,omitnil,omitempty" name:"Count"`

	// Whether it is an internal IP address.
	InternalService *bool `json:"InternalService,omitnil,omitempty" name:"InternalService"`
}

// Predefined struct for user
type CreateBackupDBInstanceRequestParams struct {
	// Instance ID. For example, cmgo-p8vn****. Log in to the [TencentDB for MongoDB console](https://console.cloud.tencent.com/MongoDB) and copy the instance ID from the instance list.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Sets the backup method.
	// - 0: logical backup.
	// - 1: physical backup.
	// - 3: snapshot backup.
	// **Note**:
	// 1. The General Edition instance supports logical and physical backup. The Cloud Disk Edition instance supports physical and snapshot backup, but does not support logical backup currently.
	// 2. Physical backup is not supported when storage encryption is enabled for the instance.
	BackupMethod *int64 `json:"BackupMethod,omitnil,omitempty" name:"BackupMethod"`

	// Backup remarks information.
	BackupRemark *string `json:"BackupRemark,omitnil,omitempty" name:"BackupRemark"`
}

type CreateBackupDBInstanceRequest struct {
	*tchttp.BaseRequest
	
	// Instance ID. For example, cmgo-p8vn****. Log in to the [TencentDB for MongoDB console](https://console.cloud.tencent.com/MongoDB) and copy the instance ID from the instance list.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Sets the backup method.
	// - 0: logical backup.
	// - 1: physical backup.
	// - 3: snapshot backup.
	// **Note**:
	// 1. The General Edition instance supports logical and physical backup. The Cloud Disk Edition instance supports physical and snapshot backup, but does not support logical backup currently.
	// 2. Physical backup is not supported when storage encryption is enabled for the instance.
	BackupMethod *int64 `json:"BackupMethod,omitnil,omitempty" name:"BackupMethod"`

	// Backup remarks information.
	BackupRemark *string `json:"BackupRemark,omitnil,omitempty" name:"BackupRemark"`
}

func (r *CreateBackupDBInstanceRequest) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *CreateBackupDBInstanceRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "InstanceId")
	delete(f, "BackupMethod")
	delete(f, "BackupRemark")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "CreateBackupDBInstanceRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type CreateBackupDBInstanceResponseParams struct {
	// Request ID.
	AsyncRequestId *string `json:"AsyncRequestId,omitnil,omitempty" name:"AsyncRequestId"`

	// The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
	RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"`
}

type CreateBackupDBInstanceResponse struct {
	*tchttp.BaseResponse
	Response *CreateBackupDBInstanceResponseParams `json:"Response"`
}

func (r *CreateBackupDBInstanceResponse) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *CreateBackupDBInstanceResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type CreateBackupDownloadTaskRequestParams struct {
	// Instance ID. Log in to the [TencentDB for MongoDB console](https://console.cloud.tencent.com/mongodb), and copy the instance ID from the instance list.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Name of the backup file to be downloaded. The [DescribeDBBackups](https://www.tencentcloud.comom/document/product/240/38574?from_cn_redirect=1) API can be called to obtain it.
	BackupName *string `json:"BackupName,omitnil,omitempty" name:"BackupName"`

	// Specifies the node ID of the replica set to be downloaded or the shard node ID list of the sharded cluster.
	// - If the replica set instance ID is cmgo-p8vnipr5, for example, BackupSets.0=cmgo-p8vnipr5_0, full data can be downloaded.
	// - If the sharded cluster instance ID is cmgo-p8vnipr5, for example, BackupSets.0=cmgo-p8vnipr5_0&BackupSets.1=cmgo-p8vnipr5_1, download the data of Shard 0 and Shard 1. If a full download is needed for the sharded cluster, import all shard names as shown in the example.
	BackupSets []*ReplicaSetInfo `json:"BackupSets,omitnil,omitempty" name:"BackupSets"`
}

type CreateBackupDownloadTaskRequest struct {
	*tchttp.BaseRequest
	
	// Instance ID. Log in to the [TencentDB for MongoDB console](https://console.cloud.tencent.com/mongodb), and copy the instance ID from the instance list.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Name of the backup file to be downloaded. The [DescribeDBBackups](https://www.tencentcloud.comom/document/product/240/38574?from_cn_redirect=1) API can be called to obtain it.
	BackupName *string `json:"BackupName,omitnil,omitempty" name:"BackupName"`

	// Specifies the node ID of the replica set to be downloaded or the shard node ID list of the sharded cluster.
	// - If the replica set instance ID is cmgo-p8vnipr5, for example, BackupSets.0=cmgo-p8vnipr5_0, full data can be downloaded.
	// - If the sharded cluster instance ID is cmgo-p8vnipr5, for example, BackupSets.0=cmgo-p8vnipr5_0&BackupSets.1=cmgo-p8vnipr5_1, download the data of Shard 0 and Shard 1. If a full download is needed for the sharded cluster, import all shard names as shown in the example.
	BackupSets []*ReplicaSetInfo `json:"BackupSets,omitnil,omitempty" name:"BackupSets"`
}

func (r *CreateBackupDownloadTaskRequest) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *CreateBackupDownloadTaskRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "InstanceId")
	delete(f, "BackupName")
	delete(f, "BackupSets")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "CreateBackupDownloadTaskRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type CreateBackupDownloadTaskResponseParams struct {
	// Status of the download task.
	Tasks []*BackupDownloadTaskStatus `json:"Tasks,omitnil,omitempty" name:"Tasks"`

	// The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
	RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"`
}

type CreateBackupDownloadTaskResponse struct {
	*tchttp.BaseResponse
	Response *CreateBackupDownloadTaskResponseParams `json:"Response"`
}

func (r *CreateBackupDownloadTaskResponse) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *CreateBackupDownloadTaskResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type CreateDBInstanceHourRequestParams struct {
	// Instance memory size. Unit: GB. Call the [DescribeSpecInfo](https://intl.cloud.tencent.com/document/product/240/38567?from_cn_redirect=1) API to obtain specific saleable memory specifications.
	Memory *uint64 `json:"Memory,omitnil,omitempty" name:"Memory"`

	// Instance disk size. Unit: GB. Call the [DescribeSpecInfo](https://intl.cloud.tencent.com/document/product/240/38567?from_cn_redirect=1) API to obtain the maximum and minimum disk sizes corresponding to each CPU specification.
	Volume *uint64 `json:"Volume,omitnil,omitempty" name:"Volume"`

	//  - Specifies the number of replica sets during replica set instance creation. This parameter can only be set to 1.
	//  - Specifies the number of shards during sharded cluster instance creation. Call the [DescribeSpecInfo](https://intl.cloud.tencent.com/document/product/240/38567?from_cn_redirect=1) API to query the range of shard quantity. The parameters MinReplicateSetNum and MaxReplicateSetNum in the returned data structure SpecItems correspond to the minimum value and maximum value, respectively.
	ReplicateSetNum *uint64 `json:"ReplicateSetNum,omitnil,omitempty" name:"ReplicateSetNum"`

	//  - Specifies the number of primary and secondary nodes for each replica set during replica set instance creation. Call the [DescribeSpecInfo](https://intl.cloud.tencent.com/document/product/240/38567?from_cn_redirect=1) API to obtain the maximum and minimum number of nodes supported for each replica set.
	//  - Specifies the number of primary and secondary nodes for each shard during sharded cluster instance creation. Call the [DescribeSpecInfo](https://intl.cloud.tencent.com/document/product/240/38567?from_cn_redirect=1) API to obtain the maximum and minimum number of nodes supported for each shard.
	NodeNum *uint64 `json:"NodeNum,omitnil,omitempty" name:"NodeNum"`

	// Refers to version information. The [DescribeSpecInfo](https://www.tencentcloud.comom/document/product/240/38567?from_cn_redirect=1) API can be called to obtain detailed information about the supported versions.
	// - MONGO_40_WT: version of the MongoDB 4.0 WiredTiger storage engine.
	// - MONGO_42_WT: version of the MongoDB 4.2 WiredTiger storage engine.
	// - MONGO_44_WT: version of the MongoDB 4.4 WiredTiger storage engine.
	// - MONGO_50_WT: version of the MongoDB 5.0 WiredTiger storage engine.
	// - MONGO_60_WT: version of the MongoDB 6.0 WiredTiger storage engine.
	// - MONGO_70_WT: version of the MongoDB 7.0 WiredTiger storage engine.
	MongoVersion *string `json:"MongoVersion,omitnil,omitempty" name:"MongoVersion"`

	// Product specification type.
	//  - HIO10G: general high-I/O 10GE type.
	//  - HCD: cloud disk type.
	MachineCode *string `json:"MachineCode,omitnil,omitempty" name:"MachineCode"`

	// Number of instances. The minimum value is 1, and the maximum value is 30.
	GoodsNum *uint64 `json:"GoodsNum,omitnil,omitempty" name:"GoodsNum"`

	// AZ information in the format of ap-guangzhou-2
	// - For more information, query through the [DescribeSpecInfo](https://intl.cloud.tencent.com/document/product/240/38567?from_cn_redirect=1) API.
	// - If multi-AZ deployment is enabled, this parameter refers to the primary AZ and must be one of the values of `AvailabilityZoneList`.
	Zone *string `json:"Zone,omitnil,omitempty" name:"Zone"`

	// Instance architecture type
	// - REPLSET: Replica set
	// - SHARD: Sharded cluster
	ClusterType *string `json:"ClusterType,omitnil,omitempty" name:"ClusterType"`

	// VPC ID.
	// - Only VPC configuration is supported, and a VPC in the same region as the instance should be selected. Log in to the [VPC console](https://console.cloud.tencent.com/vpc) to obtain the available VPC ID.
	// - After successful instance creation, VPCs can be changed. For detailed operations, see [Changing the Network](https://www.tencentcloud.comom/document/product/239/30910?from_cn_redirect=1).
	VpcId *string `json:"VpcId,omitnil,omitempty" name:"VpcId"`

	// Subnet ID of the VPC.
	// - A subnet should be specified within the selected VPC. Log in to the [VPC console](https://console.cloud.tencent.com/vpc) to obtain the available subnet ID.
	// - After successful instance creation, VPCs and subnets can be changed. For detailed operations, see [Changing the Network](https://www.tencentcloud.comom/document/product/239/30910?from_cn_redirect=1).
	SubnetId *string `json:"SubnetId,omitnil,omitempty" name:"SubnetId"`

	// Instance password. The requirements are as follows:
	//  - The number of characters should be in the range of [8, 32].
	//  - Characters within the ranges [A,Z], [a,z], and [0,9] are allowed.
	//  - Special characters that can be entered include exclamation marks (!), at signs (@), number signs (#), percent signs (%), carets (^), asterisks (\*), brackets (()), and underscores (_).
	//  - It cannot contain only the same letters or digits.
	Password *string `json:"Password,omitnil,omitempty" name:"Password"`

	// Project ID. - The default project is used if this parameter is not specified.
	//  - The project ID can be obtained on the [project management page in the TencentDB for MongoDB console](https://console.cloud.tencent.com/project).
	ProjectId *int64 `json:"ProjectId,omitnil,omitempty" name:"ProjectId"`

	// Instance tag information
	Tags []*TagInfo `json:"Tags,omitnil,omitempty" name:"Tags"`

	// Instance type.
	// - 1: formal instance.
	// - 3: read-only instance.
	// - 4: disaster recovery instance.
	// - 5. cloned instance. Note: For a cloned instance, RestoreTime is required.
	Clone *int64 `json:"Clone,omitnil,omitempty" name:"Clone"`

	// Parent instance ID.
	// - This parameter is required when the value of the **Clone** parameter is set to 3 or 4, indicating a read-only or disaster recovery instance.
	// - Log in to the [TencentDB for MongoDB console](https://console.cloud.tencent.com/mongodb), and copy the parent instance ID from the instance list.
	Father *string `json:"Father,omitnil,omitempty" name:"Father"`

	// Security group ID. Log in to the [security group console](https://console.cloud.tencent.com/vpc/security-group) to obtain the ID of the security group in the same region as the database instance.
	SecurityGroup []*string `json:"SecurityGroup,omitnil,omitempty" name:"SecurityGroup"`

	// Rollback time of the cloned instance
	// - This parameter is required for a cloned instance in the format of 2021-08-13 16:30:00.
	// - Time range for rollback: You can roll back data in the last 7 days.
	RestoreTime *string `json:"RestoreTime,omitnil,omitempty" name:"RestoreTime"`

	// Instance name. Only Chinese characters, letters, digits, underscores (_), and delimiters (-) are supported, with a length of 128 characters. When database instances are purchased in batches, the automatic ascending feature is supported through the custom naming pattern string and numeric suffix to set instance names efficiently.
	// - Basic mode: prefix + automatic ascending number (starting from 1 by default). Only a custom instance name prefix is required for **lnstanceName**. For example, it can be set to cmgo. If the purchase quantity is set to 5, after purchase, the instances will be sequentially named cmgo1, cmgo2, cmgo3, cmgo4, and cmgo5, respectively.
	// - Custom starting number mode: prefix + {R:x} (x is the custom starting number). Prefix{R:x} is required for **InstanceName**. For example, cmgo{R:3}. If the purchase quantity is set to 5, the instance names will be sequentially named cmgo3, cmgo4, cmgo5, cmgo6, and cmgo7.
	// - Composite pattern string: prefix 1{R:x} + prefix 2{R:y}+ ⋯ + fixed suffix, where x and y are the starting numbers of each prefix. A composite pattern string is required for **instanceName**. For example, cmgo{R:10}\_node{R:12}\_db. If the batch purchase quantity is set to 5, the instances will be sequentially named cmgo10\_node12\_db, cmgo11\_node13\_db, cmgo12\_node14\_db, cmgo13\_node15\_db, and cmgo14\_node16\_db.
	InstanceName *string `json:"InstanceName,omitnil,omitempty" name:"InstanceName"`

	// Specifies the list of AZs during multi-AZ deployment of TencentDB for MongoDB instances.
	// - For instances in multi-AZ deployment mode, the **Zone** parameter specifies the primary AZ, and **AvailabilityZoneList** specifies all AZs, including the primary AZ. Format: [ap-guangzhou-2,ap-guangzhou-3,ap-guangzhou-4].
	// - The [DescribeSpecInfo](https://www.tencentcloud.comom/document/product/240/38567?from_cn_redirect=1) API can be called to obtain AZs planned for TencentDB for MongoDB instances in different regions, helping you specify valid AZs.
	// - Nodes in multi-AZ deployment mode can only be deployed in 3 different AZs. Deploying most nodes of a cluster in the same AZ is not supported. For example, a 3-node cluster does not support deploying 2 nodes in the same AZ.
	AvailabilityZoneList []*string `json:"AvailabilityZoneList,omitnil,omitempty" name:"AvailabilityZoneList"`

	// Number of Mongos node CPU cores. Valid values: 1, 2, 4, 8, and 16. This parameter is required during sharded cluster instance purchase.
	MongosCpu *uint64 `json:"MongosCpu,omitnil,omitempty" name:"MongosCpu"`

	// Mongos node memory size.
	// - This parameter is required during sharded cluster instance purchase.
	// - Unit: GB. 1-core 2 GB, 2-core 4 GB, 4-core 8 GB, 8-core 16 GB, and 16-core 32 GB are supported.
	MongosMemory *uint64 `json:"MongosMemory,omitnil,omitempty" name:"MongosMemory"`

	// Number of Mongos nodes. This parameter is required during sharded cluster instance purchase.
	//  - For instances in single-AZ deployment mode, the value range is [3,32].
	//  - For instances in multi-AZ deployment mode, the value range is [6,32].
	MongosNodeNum *uint64 `json:"MongosNodeNum,omitnil,omitempty" name:"MongosNodeNum"`

	// Number of read-only nodes. Value ranges: [0,5].
	ReadonlyNodeNum *uint64 `json:"ReadonlyNodeNum,omitnil,omitempty" name:"ReadonlyNodeNum"`

	// Array of AZs of read-only nodes. This parameter is required for instances in multi-AZ deployment mode when **ReadonlyNodeNum** is not set to **0**.
	ReadonlyNodeAvailabilityZoneList []*string `json:"ReadonlyNodeAvailabilityZoneList,omitnil,omitempty" name:"ReadonlyNodeAvailabilityZoneList"`

	// AZ where the hidden node resides, which is required in cross-AZ instance deployment.
	HiddenZone *string `json:"HiddenZone,omitnil,omitempty" name:"HiddenZone"`

	// Parameter template ID.
	// - A parameter template is a collection of predefined parameter values that can be used to quickly configure new MongoDB instances. Proper use of parameter templates can significantly enhance the deployment efficiency and operational performance of the database.
	// - The [DescribeDBInstanceParamTpl](https://www.tencentcloud.comom/document/product/240/109155?from_cn_redirect=1) API can be called to obtain the parameter template ID. Select the parameter template ID corresponding to the instance version and architecture.
	ParamTemplateId *string `json:"ParamTemplateId,omitnil,omitempty" name:"ParamTemplateId"`
}

type CreateDBInstanceHourRequest struct {
	*tchttp.BaseRequest
	
	// Instance memory size. Unit: GB. Call the [DescribeSpecInfo](https://intl.cloud.tencent.com/document/product/240/38567?from_cn_redirect=1) API to obtain specific saleable memory specifications.
	Memory *uint64 `json:"Memory,omitnil,omitempty" name:"Memory"`

	// Instance disk size. Unit: GB. Call the [DescribeSpecInfo](https://intl.cloud.tencent.com/document/product/240/38567?from_cn_redirect=1) API to obtain the maximum and minimum disk sizes corresponding to each CPU specification.
	Volume *uint64 `json:"Volume,omitnil,omitempty" name:"Volume"`

	//  - Specifies the number of replica sets during replica set instance creation. This parameter can only be set to 1.
	//  - Specifies the number of shards during sharded cluster instance creation. Call the [DescribeSpecInfo](https://intl.cloud.tencent.com/document/product/240/38567?from_cn_redirect=1) API to query the range of shard quantity. The parameters MinReplicateSetNum and MaxReplicateSetNum in the returned data structure SpecItems correspond to the minimum value and maximum value, respectively.
	ReplicateSetNum *uint64 `json:"ReplicateSetNum,omitnil,omitempty" name:"ReplicateSetNum"`

	//  - Specifies the number of primary and secondary nodes for each replica set during replica set instance creation. Call the [DescribeSpecInfo](https://intl.cloud.tencent.com/document/product/240/38567?from_cn_redirect=1) API to obtain the maximum and minimum number of nodes supported for each replica set.
	//  - Specifies the number of primary and secondary nodes for each shard during sharded cluster instance creation. Call the [DescribeSpecInfo](https://intl.cloud.tencent.com/document/product/240/38567?from_cn_redirect=1) API to obtain the maximum and minimum number of nodes supported for each shard.
	NodeNum *uint64 `json:"NodeNum,omitnil,omitempty" name:"NodeNum"`

	// Refers to version information. The [DescribeSpecInfo](https://www.tencentcloud.comom/document/product/240/38567?from_cn_redirect=1) API can be called to obtain detailed information about the supported versions.
	// - MONGO_40_WT: version of the MongoDB 4.0 WiredTiger storage engine.
	// - MONGO_42_WT: version of the MongoDB 4.2 WiredTiger storage engine.
	// - MONGO_44_WT: version of the MongoDB 4.4 WiredTiger storage engine.
	// - MONGO_50_WT: version of the MongoDB 5.0 WiredTiger storage engine.
	// - MONGO_60_WT: version of the MongoDB 6.0 WiredTiger storage engine.
	// - MONGO_70_WT: version of the MongoDB 7.0 WiredTiger storage engine.
	MongoVersion *string `json:"MongoVersion,omitnil,omitempty" name:"MongoVersion"`

	// Product specification type.
	//  - HIO10G: general high-I/O 10GE type.
	//  - HCD: cloud disk type.
	MachineCode *string `json:"MachineCode,omitnil,omitempty" name:"MachineCode"`

	// Number of instances. The minimum value is 1, and the maximum value is 30.
	GoodsNum *uint64 `json:"GoodsNum,omitnil,omitempty" name:"GoodsNum"`

	// AZ information in the format of ap-guangzhou-2
	// - For more information, query through the [DescribeSpecInfo](https://intl.cloud.tencent.com/document/product/240/38567?from_cn_redirect=1) API.
	// - If multi-AZ deployment is enabled, this parameter refers to the primary AZ and must be one of the values of `AvailabilityZoneList`.
	Zone *string `json:"Zone,omitnil,omitempty" name:"Zone"`

	// Instance architecture type
	// - REPLSET: Replica set
	// - SHARD: Sharded cluster
	ClusterType *string `json:"ClusterType,omitnil,omitempty" name:"ClusterType"`

	// VPC ID.
	// - Only VPC configuration is supported, and a VPC in the same region as the instance should be selected. Log in to the [VPC console](https://console.cloud.tencent.com/vpc) to obtain the available VPC ID.
	// - After successful instance creation, VPCs can be changed. For detailed operations, see [Changing the Network](https://www.tencentcloud.comom/document/product/239/30910?from_cn_redirect=1).
	VpcId *string `json:"VpcId,omitnil,omitempty" name:"VpcId"`

	// Subnet ID of the VPC.
	// - A subnet should be specified within the selected VPC. Log in to the [VPC console](https://console.cloud.tencent.com/vpc) to obtain the available subnet ID.
	// - After successful instance creation, VPCs and subnets can be changed. For detailed operations, see [Changing the Network](https://www.tencentcloud.comom/document/product/239/30910?from_cn_redirect=1).
	SubnetId *string `json:"SubnetId,omitnil,omitempty" name:"SubnetId"`

	// Instance password. The requirements are as follows:
	//  - The number of characters should be in the range of [8, 32].
	//  - Characters within the ranges [A,Z], [a,z], and [0,9] are allowed.
	//  - Special characters that can be entered include exclamation marks (!), at signs (@), number signs (#), percent signs (%), carets (^), asterisks (\*), brackets (()), and underscores (_).
	//  - It cannot contain only the same letters or digits.
	Password *string `json:"Password,omitnil,omitempty" name:"Password"`

	// Project ID. - The default project is used if this parameter is not specified.
	//  - The project ID can be obtained on the [project management page in the TencentDB for MongoDB console](https://console.cloud.tencent.com/project).
	ProjectId *int64 `json:"ProjectId,omitnil,omitempty" name:"ProjectId"`

	// Instance tag information
	Tags []*TagInfo `json:"Tags,omitnil,omitempty" name:"Tags"`

	// Instance type.
	// - 1: formal instance.
	// - 3: read-only instance.
	// - 4: disaster recovery instance.
	// - 5. cloned instance. Note: For a cloned instance, RestoreTime is required.
	Clone *int64 `json:"Clone,omitnil,omitempty" name:"Clone"`

	// Parent instance ID.
	// - This parameter is required when the value of the **Clone** parameter is set to 3 or 4, indicating a read-only or disaster recovery instance.
	// - Log in to the [TencentDB for MongoDB console](https://console.cloud.tencent.com/mongodb), and copy the parent instance ID from the instance list.
	Father *string `json:"Father,omitnil,omitempty" name:"Father"`

	// Security group ID. Log in to the [security group console](https://console.cloud.tencent.com/vpc/security-group) to obtain the ID of the security group in the same region as the database instance.
	SecurityGroup []*string `json:"SecurityGroup,omitnil,omitempty" name:"SecurityGroup"`

	// Rollback time of the cloned instance
	// - This parameter is required for a cloned instance in the format of 2021-08-13 16:30:00.
	// - Time range for rollback: You can roll back data in the last 7 days.
	RestoreTime *string `json:"RestoreTime,omitnil,omitempty" name:"RestoreTime"`

	// Instance name. Only Chinese characters, letters, digits, underscores (_), and delimiters (-) are supported, with a length of 128 characters. When database instances are purchased in batches, the automatic ascending feature is supported through the custom naming pattern string and numeric suffix to set instance names efficiently.
	// - Basic mode: prefix + automatic ascending number (starting from 1 by default). Only a custom instance name prefix is required for **lnstanceName**. For example, it can be set to cmgo. If the purchase quantity is set to 5, after purchase, the instances will be sequentially named cmgo1, cmgo2, cmgo3, cmgo4, and cmgo5, respectively.
	// - Custom starting number mode: prefix + {R:x} (x is the custom starting number). Prefix{R:x} is required for **InstanceName**. For example, cmgo{R:3}. If the purchase quantity is set to 5, the instance names will be sequentially named cmgo3, cmgo4, cmgo5, cmgo6, and cmgo7.
	// - Composite pattern string: prefix 1{R:x} + prefix 2{R:y}+ ⋯ + fixed suffix, where x and y are the starting numbers of each prefix. A composite pattern string is required for **instanceName**. For example, cmgo{R:10}\_node{R:12}\_db. If the batch purchase quantity is set to 5, the instances will be sequentially named cmgo10\_node12\_db, cmgo11\_node13\_db, cmgo12\_node14\_db, cmgo13\_node15\_db, and cmgo14\_node16\_db.
	InstanceName *string `json:"InstanceName,omitnil,omitempty" name:"InstanceName"`

	// Specifies the list of AZs during multi-AZ deployment of TencentDB for MongoDB instances.
	// - For instances in multi-AZ deployment mode, the **Zone** parameter specifies the primary AZ, and **AvailabilityZoneList** specifies all AZs, including the primary AZ. Format: [ap-guangzhou-2,ap-guangzhou-3,ap-guangzhou-4].
	// - The [DescribeSpecInfo](https://www.tencentcloud.comom/document/product/240/38567?from_cn_redirect=1) API can be called to obtain AZs planned for TencentDB for MongoDB instances in different regions, helping you specify valid AZs.
	// - Nodes in multi-AZ deployment mode can only be deployed in 3 different AZs. Deploying most nodes of a cluster in the same AZ is not supported. For example, a 3-node cluster does not support deploying 2 nodes in the same AZ.
	AvailabilityZoneList []*string `json:"AvailabilityZoneList,omitnil,omitempty" name:"AvailabilityZoneList"`

	// Number of Mongos node CPU cores. Valid values: 1, 2, 4, 8, and 16. This parameter is required during sharded cluster instance purchase.
	MongosCpu *uint64 `json:"MongosCpu,omitnil,omitempty" name:"MongosCpu"`

	// Mongos node memory size.
	// - This parameter is required during sharded cluster instance purchase.
	// - Unit: GB. 1-core 2 GB, 2-core 4 GB, 4-core 8 GB, 8-core 16 GB, and 16-core 32 GB are supported.
	MongosMemory *uint64 `json:"MongosMemory,omitnil,omitempty" name:"MongosMemory"`

	// Number of Mongos nodes. This parameter is required during sharded cluster instance purchase.
	//  - For instances in single-AZ deployment mode, the value range is [3,32].
	//  - For instances in multi-AZ deployment mode, the value range is [6,32].
	MongosNodeNum *uint64 `json:"MongosNodeNum,omitnil,omitempty" name:"MongosNodeNum"`

	// Number of read-only nodes. Value ranges: [0,5].
	ReadonlyNodeNum *uint64 `json:"ReadonlyNodeNum,omitnil,omitempty" name:"ReadonlyNodeNum"`

	// Array of AZs of read-only nodes. This parameter is required for instances in multi-AZ deployment mode when **ReadonlyNodeNum** is not set to **0**.
	ReadonlyNodeAvailabilityZoneList []*string `json:"ReadonlyNodeAvailabilityZoneList,omitnil,omitempty" name:"ReadonlyNodeAvailabilityZoneList"`

	// AZ where the hidden node resides, which is required in cross-AZ instance deployment.
	HiddenZone *string `json:"HiddenZone,omitnil,omitempty" name:"HiddenZone"`

	// Parameter template ID.
	// - A parameter template is a collection of predefined parameter values that can be used to quickly configure new MongoDB instances. Proper use of parameter templates can significantly enhance the deployment efficiency and operational performance of the database.
	// - The [DescribeDBInstanceParamTpl](https://www.tencentcloud.comom/document/product/240/109155?from_cn_redirect=1) API can be called to obtain the parameter template ID. Select the parameter template ID corresponding to the instance version and architecture.
	ParamTemplateId *string `json:"ParamTemplateId,omitnil,omitempty" name:"ParamTemplateId"`
}

func (r *CreateDBInstanceHourRequest) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *CreateDBInstanceHourRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "Memory")
	delete(f, "Volume")
	delete(f, "ReplicateSetNum")
	delete(f, "NodeNum")
	delete(f, "MongoVersion")
	delete(f, "MachineCode")
	delete(f, "GoodsNum")
	delete(f, "Zone")
	delete(f, "ClusterType")
	delete(f, "VpcId")
	delete(f, "SubnetId")
	delete(f, "Password")
	delete(f, "ProjectId")
	delete(f, "Tags")
	delete(f, "Clone")
	delete(f, "Father")
	delete(f, "SecurityGroup")
	delete(f, "RestoreTime")
	delete(f, "InstanceName")
	delete(f, "AvailabilityZoneList")
	delete(f, "MongosCpu")
	delete(f, "MongosMemory")
	delete(f, "MongosNodeNum")
	delete(f, "ReadonlyNodeNum")
	delete(f, "ReadonlyNodeAvailabilityZoneList")
	delete(f, "HiddenZone")
	delete(f, "ParamTemplateId")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "CreateDBInstanceHourRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type CreateDBInstanceHourResponseParams struct {
	// Order ID
	DealId *string `json:"DealId,omitnil,omitempty" name:"DealId"`

	// List of IDs of the created instances
	InstanceIds []*string `json:"InstanceIds,omitnil,omitempty" name:"InstanceIds"`

	// The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
	RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"`
}

type CreateDBInstanceHourResponse struct {
	*tchttp.BaseResponse
	Response *CreateDBInstanceHourResponseParams `json:"Response"`
}

func (r *CreateDBInstanceHourResponse) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *CreateDBInstanceHourResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type CreateDBInstanceRequestParams struct {
	//  - Specifies the number of primary and secondary nodes for each replica set during replica set instance creation. Call the [DescribeSpecInfo](https://intl.cloud.tencent.com/document/product/240/38567?from_cn_redirect=1) API to obtain the maximum and minimum number of nodes supported for each replica set.
	//  - Specifies the number of primary and secondary nodes for each shard during sharded cluster instance creation. Call the [DescribeSpecInfo](https://intl.cloud.tencent.com/document/product/240/38567?from_cn_redirect=1) API to obtain the maximum and minimum number of nodes supported for each shard.
	NodeNum *uint64 `json:"NodeNum,omitnil,omitempty" name:"NodeNum"`

	// Instance memory size. Unit: GB. Call the [DescribeSpecInfo](https://intl.cloud.tencent.com/document/product/240/38567?from_cn_redirect=1) API to obtain specific saleable memory specifications.
	Memory *uint64 `json:"Memory,omitnil,omitempty" name:"Memory"`

	// Instance disk size. Unit: GB. Call the [DescribeSpecInfo](https://intl.cloud.tencent.com/document/product/240/38567?from_cn_redirect=1) API to obtain the maximum and minimum disk sizes corresponding to each CPU specification.
	Volume *uint64 `json:"Volume,omitnil,omitempty" name:"Volume"`

	// Refers to version information. The [DescribeSpecInfo](https://www.tencentcloud.comom/document/product/240/38567?from_cn_redirect=1) API can be called to obtain detailed information about the supported versions.
	// - MONGO_40_WT: version of the MongoDB 4.0 WiredTiger storage engine.
	// - MONGO_42_WT: version of the MongoDB 4.2 WiredTiger storage engine.
	// - MONGO_44_WT: version of the MongoDB 4.4 WiredTiger storage engine.
	// - MONGO_50_WT: version of the MongoDB 5.0 WiredTiger storage engine.
	// - MONGO_60_WT: version of the MongoDB 6.0 WiredTiger storage engine.
	// - MONGO_70_WT: version of the MongoDB 7.0 WiredTiger storage engine.
	MongoVersion *string `json:"MongoVersion,omitnil,omitempty" name:"MongoVersion"`

	// Number of instances. The minimum value is 1, and the maximum value is 30.
	GoodsNum *uint64 `json:"GoodsNum,omitnil,omitempty" name:"GoodsNum"`

	// AZ information. Format: ap-guangzhou-2.
	//  - Call the [DescribeSpecInfo](https://intl.cloud.tencent.com/document/product/240/38567?from_cn_redirect=1) API to obtain the specific information.
	//  - This parameter indicates the primary AZ. If multi-AZ deployment is adopted, the value of Zone should be one of the values of AvailabilityZoneList.
	Zone *string `json:"Zone,omitnil,omitempty" name:"Zone"`

	// Specifies the purchase duration during the instance purchase, in months. Valid values: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 24, and 36.
	Period *uint64 `json:"Period,omitnil,omitempty" name:"Period"`

	// Product specification type.
	//  - HIO10G: general high-I/O 10GE type.
	//  - HCD: cloud disk type.
	MachineCode *string `json:"MachineCode,omitnil,omitempty" name:"MachineCode"`

	// Instance architecture type.
	//  - REPLSET: replica set.
	//  - SHARD: sharded cluster.
	ClusterType *string `json:"ClusterType,omitnil,omitempty" name:"ClusterType"`

	//  - Specifies the number of replica sets during replica set instance creation. This parameter can only be set to 1.
	//  - Specifies the number of shards during sharded cluster instance creation. Call the [DescribeSpecInfo](https://intl.cloud.tencent.com/document/product/240/38567?from_cn_redirect=1) API to query the range of shard quantity. The parameters MinReplicateSetNum and MaxReplicateSetNum in the returned data structure SpecItems correspond to the minimum value and maximum value, respectively.
	ReplicateSetNum *uint64 `json:"ReplicateSetNum,omitnil,omitempty" name:"ReplicateSetNum"`

	// Project ID.  - The default project is used if this parameter is not specified.
	//  - The project ID can be obtained on the [project management page in the TencentDB for MongoDB console](https://console.cloud.tencent.com/project).
	ProjectId *int64 `json:"ProjectId,omitnil,omitempty" name:"ProjectId"`

	// VPC ID.
	// - Only VPC configuration is supported, and a VPC in the same region as the instance should be selected. Log in to the [VPC console](https://console.cloud.tencent.com/vpc) to obtain the available VPC ID.
	// - After successful instance creation, VPCs can be changed. For detailed operations, see [Changing the Network](https://www.tencentcloud.comom/document/product/239/30910?from_cn_redirect=1).
	VpcId *string `json:"VpcId,omitnil,omitempty" name:"VpcId"`

	// Subnet ID of the VPC.
	// - A subnet should be specified within the selected VPC. Log in to the [VPC console](https://console.cloud.tencent.com/vpc) to obtain the available subnet ID.
	// - After successful instance creation, VPCs and subnets can be changed. For detailed operations, see [Changing the Network](https://www.tencentcloud.comom/document/product/239/30910?from_cn_redirect=1).
	SubnetId *string `json:"SubnetId,omitnil,omitempty" name:"SubnetId"`

	// Instance password. The requirements are as follows:
	//  - The number of characters should be in the range of [8, 32].
	//  - Characters within the ranges [A,Z], [a,z], and [0,9] are allowed.
	//  - Special characters that can be entered include exclamation marks (!), at signs (@), number signs (#), percent signs (%), carets (^), asterisks (\*), brackets (()), and underscores (_).
	//  - It cannot contain only the same letters or digits.
	Password *string `json:"Password,omitnil,omitempty" name:"Password"`

	// Instance tag information.
	Tags []*TagInfo `json:"Tags,omitnil,omitempty" name:"Tags"`

	// Automatic renewal flag.
	//  - 0: no automatic renewal.
	//  - 1: automatic renewal.
	AutoRenewFlag *uint64 `json:"AutoRenewFlag,omitnil,omitempty" name:"AutoRenewFlag"`

	// Whether to automatically select a voucher.
	//  - 1: yes.
	//  - 0: no. Default value: 0.
	AutoVoucher *uint64 `json:"AutoVoucher,omitnil,omitempty" name:"AutoVoucher"`

	// Instance type.
	// - 1: formal instance.
	// - 3: read-only instance.
	// - 4: disaster recovery instance.
	// - 5: cloned instance. Note: For a cloned instance, RestoreTime is required.
	Clone *int64 `json:"Clone,omitnil,omitempty" name:"Clone"`

	// Parent instance ID.
	// - This parameter is required when the value of the **Clone** parameter is set to 3 or 4, indicating a read-only or disaster recovery instance.
	// - Log in to the [TencentDB for MongoDB console](https://console.cloud.tencent.com/mongodb), and copy the parent instance ID from the instance list.
	Father *string `json:"Father,omitnil,omitempty" name:"Father"`

	// Security group ID. Log in to the [security group console](https://console.cloud.tencent.com/vpc/security-group) to obtain the ID of the security group in the same region as the database instance.
	SecurityGroup []*string `json:"SecurityGroup,omitnil,omitempty" name:"SecurityGroup"`

	// Rollback time of the cloned instance. It is required when the Clone value is 5 or 6. - This parameter is required for cloned instances. Format: 2021-08-13 16:30:00. - Rollback time range: Only data within the last 7 days can be rolled back.
	RestoreTime *string `json:"RestoreTime,omitnil,omitempty" name:"RestoreTime"`

	// Instance name. Only Chinese characters, letters, digits, underscores (_), and delimiters (-) are supported, with a length of 128 characters. When database instances are purchased in batches, the automatic ascending feature is supported through the custom naming pattern string and numeric suffix to set instance names efficiently.
	// - Basic mode: prefix + automatic ascending number (starting from 1 by default). Only a custom instance name prefix is required for **lnstanceName**. For example, it can be set to cmgo. If the purchase quantity is set to 5, after purchase, the instances will be sequentially named cmgo1, cmgo2, cmgo3, cmgo4, and cmgo5, respectively.
	// - Custom starting number mode: prefix + {R:x} (x is the custom starting number). Prefix{R:x} is required for **InstanceName**. For example, cmgo{R:3}. If the purchase quantity is set to 5, the instance names will be sequentially named cmgo3, cmgo4, cmgo5, cmgo6, and cmgo7.
	// - Composite pattern string: prefix 1{R:x} + prefix 2{R:y}+ ⋯ + fixed suffix, where x and y are the starting numbers of each prefix. A composite pattern string is required for **instanceName**. For example, cmgo{R:10}\_node{R:12}\_db. If the batch purchase quantity is set to 5, the instances will be sequentially named cmgo10\_node12\_db, cmgo11\_node13\_db, cmgo12\_node14\_db, cmgo13\_node15\_db, and cmgo14\_node16\_db.
	InstanceName *string `json:"InstanceName,omitnil,omitempty" name:"InstanceName"`

	// Specifies the list of AZs during multi-AZ deployment of TencentDB for MongoDB instances.
	//  - For instances in multi-AZ deployment mode, the **Zone** parameter specifies the primary AZ, and **AvailabilityZoneList** specifies all AZs, including the primary AZ. Format: [ap-guangzhou-2,ap-guangzhou-3,ap-guangzhou-4].
	//  - The [DescribeSpecInfo](https://intl.cloud.tencent.com/document/product/240/38567?from_cn_redirect=1) API can be called to obtain AZs planned for TencentDB for MongoDB instances in different regions, helping you specify valid AZs.
	//  - Nodes in multi-AZ deployment mode can only be deployed in 3 different AZs. Deploying most nodes of a cluster in the same AZ is not supported. For example, a 3-node cluster does not support deploying 2 nodes in the same AZ.
	AvailabilityZoneList []*string `json:"AvailabilityZoneList,omitnil,omitempty" name:"AvailabilityZoneList"`

	// Number of Mongos node CPU cores. Valid values: 1, 2, 4, 8, and 16. This parameter is required during sharded cluster instance purchase.
	MongosCpu *uint64 `json:"MongosCpu,omitnil,omitempty" name:"MongosCpu"`

	// Mongos node memory size.
	//  - This parameter is required during sharded cluster instance purchase.
	//  - Unit: GB. 1-core 2GB, 2-core 4GB, 4-core 8GB, 8-core 16GB, and 16-core 32GB are supported.
	MongosMemory *uint64 `json:"MongosMemory,omitnil,omitempty" name:"MongosMemory"`

	// Number of Mongos nodes. This parameter is required during sharded cluster instance purchase.
	//  - For instances in single-AZ deployment mode, the value range is [3,32].
	//  - For instances in multi-AZ deployment mode, the value range is [6,32].
	MongosNodeNum *uint64 `json:"MongosNodeNum,omitnil,omitempty" name:"MongosNodeNum"`

	// Number of read-only nodes. Value ranges: [0,5].
	ReadonlyNodeNum *uint64 `json:"ReadonlyNodeNum,omitnil,omitempty" name:"ReadonlyNodeNum"`

	// Array of AZs of read-only nodes. This parameter is required for instances in multi-AZ deployment mode when **ReadonlyNodeNum** is not set to **0**.
	ReadonlyNodeAvailabilityZoneList []*string `json:"ReadonlyNodeAvailabilityZoneList,omitnil,omitempty" name:"ReadonlyNodeAvailabilityZoneList"`

	// AZ of the hidden node. This parameter is required for instances in multi-AZ deployment mode.
	HiddenZone *string `json:"HiddenZone,omitnil,omitempty" name:"HiddenZone"`

	// Parameter template ID.
	// - A parameter template is a collection of predefined parameter values that can be used to quickly configure new MongoDB instances. Proper use of parameter templates can significantly enhance the deployment efficiency and operational performance of the database.
	// - The [DescribeDBInstanceParamTpl](https://www.tencentcloud.comom/document/product/240/109155?from_cn_redirect=1) API can be called to obtain the parameter template ID. Select the parameter template ID corresponding to the instance version and architecture.
	ParamTemplateId *string `json:"ParamTemplateId,omitnil,omitempty" name:"ParamTemplateId"`
}

type CreateDBInstanceRequest struct {
	*tchttp.BaseRequest
	
	//  - Specifies the number of primary and secondary nodes for each replica set during replica set instance creation. Call the [DescribeSpecInfo](https://intl.cloud.tencent.com/document/product/240/38567?from_cn_redirect=1) API to obtain the maximum and minimum number of nodes supported for each replica set.
	//  - Specifies the number of primary and secondary nodes for each shard during sharded cluster instance creation. Call the [DescribeSpecInfo](https://intl.cloud.tencent.com/document/product/240/38567?from_cn_redirect=1) API to obtain the maximum and minimum number of nodes supported for each shard.
	NodeNum *uint64 `json:"NodeNum,omitnil,omitempty" name:"NodeNum"`

	// Instance memory size. Unit: GB. Call the [DescribeSpecInfo](https://intl.cloud.tencent.com/document/product/240/38567?from_cn_redirect=1) API to obtain specific saleable memory specifications.
	Memory *uint64 `json:"Memory,omitnil,omitempty" name:"Memory"`

	// Instance disk size. Unit: GB. Call the [DescribeSpecInfo](https://intl.cloud.tencent.com/document/product/240/38567?from_cn_redirect=1) API to obtain the maximum and minimum disk sizes corresponding to each CPU specification.
	Volume *uint64 `json:"Volume,omitnil,omitempty" name:"Volume"`

	// Refers to version information. The [DescribeSpecInfo](https://www.tencentcloud.comom/document/product/240/38567?from_cn_redirect=1) API can be called to obtain detailed information about the supported versions.
	// - MONGO_40_WT: version of the MongoDB 4.0 WiredTiger storage engine.
	// - MONGO_42_WT: version of the MongoDB 4.2 WiredTiger storage engine.
	// - MONGO_44_WT: version of the MongoDB 4.4 WiredTiger storage engine.
	// - MONGO_50_WT: version of the MongoDB 5.0 WiredTiger storage engine.
	// - MONGO_60_WT: version of the MongoDB 6.0 WiredTiger storage engine.
	// - MONGO_70_WT: version of the MongoDB 7.0 WiredTiger storage engine.
	MongoVersion *string `json:"MongoVersion,omitnil,omitempty" name:"MongoVersion"`

	// Number of instances. The minimum value is 1, and the maximum value is 30.
	GoodsNum *uint64 `json:"GoodsNum,omitnil,omitempty" name:"GoodsNum"`

	// AZ information. Format: ap-guangzhou-2.
	//  - Call the [DescribeSpecInfo](https://intl.cloud.tencent.com/document/product/240/38567?from_cn_redirect=1) API to obtain the specific information.
	//  - This parameter indicates the primary AZ. If multi-AZ deployment is adopted, the value of Zone should be one of the values of AvailabilityZoneList.
	Zone *string `json:"Zone,omitnil,omitempty" name:"Zone"`

	// Specifies the purchase duration during the instance purchase, in months. Valid values: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 24, and 36.
	Period *uint64 `json:"Period,omitnil,omitempty" name:"Period"`

	// Product specification type.
	//  - HIO10G: general high-I/O 10GE type.
	//  - HCD: cloud disk type.
	MachineCode *string `json:"MachineCode,omitnil,omitempty" name:"MachineCode"`

	// Instance architecture type.
	//  - REPLSET: replica set.
	//  - SHARD: sharded cluster.
	ClusterType *string `json:"ClusterType,omitnil,omitempty" name:"ClusterType"`

	//  - Specifies the number of replica sets during replica set instance creation. This parameter can only be set to 1.
	//  - Specifies the number of shards during sharded cluster instance creation. Call the [DescribeSpecInfo](https://intl.cloud.tencent.com/document/product/240/38567?from_cn_redirect=1) API to query the range of shard quantity. The parameters MinReplicateSetNum and MaxReplicateSetNum in the returned data structure SpecItems correspond to the minimum value and maximum value, respectively.
	ReplicateSetNum *uint64 `json:"ReplicateSetNum,omitnil,omitempty" name:"ReplicateSetNum"`

	// Project ID.  - The default project is used if this parameter is not specified.
	//  - The project ID can be obtained on the [project management page in the TencentDB for MongoDB console](https://console.cloud.tencent.com/project).
	ProjectId *int64 `json:"ProjectId,omitnil,omitempty" name:"ProjectId"`

	// VPC ID.
	// - Only VPC configuration is supported, and a VPC in the same region as the instance should be selected. Log in to the [VPC console](https://console.cloud.tencent.com/vpc) to obtain the available VPC ID.
	// - After successful instance creation, VPCs can be changed. For detailed operations, see [Changing the Network](https://www.tencentcloud.comom/document/product/239/30910?from_cn_redirect=1).
	VpcId *string `json:"VpcId,omitnil,omitempty" name:"VpcId"`

	// Subnet ID of the VPC.
	// - A subnet should be specified within the selected VPC. Log in to the [VPC console](https://console.cloud.tencent.com/vpc) to obtain the available subnet ID.
	// - After successful instance creation, VPCs and subnets can be changed. For detailed operations, see [Changing the Network](https://www.tencentcloud.comom/document/product/239/30910?from_cn_redirect=1).
	SubnetId *string `json:"SubnetId,omitnil,omitempty" name:"SubnetId"`

	// Instance password. The requirements are as follows:
	//  - The number of characters should be in the range of [8, 32].
	//  - Characters within the ranges [A,Z], [a,z], and [0,9] are allowed.
	//  - Special characters that can be entered include exclamation marks (!), at signs (@), number signs (#), percent signs (%), carets (^), asterisks (\*), brackets (()), and underscores (_).
	//  - It cannot contain only the same letters or digits.
	Password *string `json:"Password,omitnil,omitempty" name:"Password"`

	// Instance tag information.
	Tags []*TagInfo `json:"Tags,omitnil,omitempty" name:"Tags"`

	// Automatic renewal flag.
	//  - 0: no automatic renewal.
	//  - 1: automatic renewal.
	AutoRenewFlag *uint64 `json:"AutoRenewFlag,omitnil,omitempty" name:"AutoRenewFlag"`

	// Whether to automatically select a voucher.
	//  - 1: yes.
	//  - 0: no. Default value: 0.
	AutoVoucher *uint64 `json:"AutoVoucher,omitnil,omitempty" name:"AutoVoucher"`

	// Instance type.
	// - 1: formal instance.
	// - 3: read-only instance.
	// - 4: disaster recovery instance.
	// - 5: cloned instance. Note: For a cloned instance, RestoreTime is required.
	Clone *int64 `json:"Clone,omitnil,omitempty" name:"Clone"`

	// Parent instance ID.
	// - This parameter is required when the value of the **Clone** parameter is set to 3 or 4, indicating a read-only or disaster recovery instance.
	// - Log in to the [TencentDB for MongoDB console](https://console.cloud.tencent.com/mongodb), and copy the parent instance ID from the instance list.
	Father *string `json:"Father,omitnil,omitempty" name:"Father"`

	// Security group ID. Log in to the [security group console](https://console.cloud.tencent.com/vpc/security-group) to obtain the ID of the security group in the same region as the database instance.
	SecurityGroup []*string `json:"SecurityGroup,omitnil,omitempty" name:"SecurityGroup"`

	// Rollback time of the cloned instance. It is required when the Clone value is 5 or 6. - This parameter is required for cloned instances. Format: 2021-08-13 16:30:00. - Rollback time range: Only data within the last 7 days can be rolled back.
	RestoreTime *string `json:"RestoreTime,omitnil,omitempty" name:"RestoreTime"`

	// Instance name. Only Chinese characters, letters, digits, underscores (_), and delimiters (-) are supported, with a length of 128 characters. When database instances are purchased in batches, the automatic ascending feature is supported through the custom naming pattern string and numeric suffix to set instance names efficiently.
	// - Basic mode: prefix + automatic ascending number (starting from 1 by default). Only a custom instance name prefix is required for **lnstanceName**. For example, it can be set to cmgo. If the purchase quantity is set to 5, after purchase, the instances will be sequentially named cmgo1, cmgo2, cmgo3, cmgo4, and cmgo5, respectively.
	// - Custom starting number mode: prefix + {R:x} (x is the custom starting number). Prefix{R:x} is required for **InstanceName**. For example, cmgo{R:3}. If the purchase quantity is set to 5, the instance names will be sequentially named cmgo3, cmgo4, cmgo5, cmgo6, and cmgo7.
	// - Composite pattern string: prefix 1{R:x} + prefix 2{R:y}+ ⋯ + fixed suffix, where x and y are the starting numbers of each prefix. A composite pattern string is required for **instanceName**. For example, cmgo{R:10}\_node{R:12}\_db. If the batch purchase quantity is set to 5, the instances will be sequentially named cmgo10\_node12\_db, cmgo11\_node13\_db, cmgo12\_node14\_db, cmgo13\_node15\_db, and cmgo14\_node16\_db.
	InstanceName *string `json:"InstanceName,omitnil,omitempty" name:"InstanceName"`

	// Specifies the list of AZs during multi-AZ deployment of TencentDB for MongoDB instances.
	//  - For instances in multi-AZ deployment mode, the **Zone** parameter specifies the primary AZ, and **AvailabilityZoneList** specifies all AZs, including the primary AZ. Format: [ap-guangzhou-2,ap-guangzhou-3,ap-guangzhou-4].
	//  - The [DescribeSpecInfo](https://intl.cloud.tencent.com/document/product/240/38567?from_cn_redirect=1) API can be called to obtain AZs planned for TencentDB for MongoDB instances in different regions, helping you specify valid AZs.
	//  - Nodes in multi-AZ deployment mode can only be deployed in 3 different AZs. Deploying most nodes of a cluster in the same AZ is not supported. For example, a 3-node cluster does not support deploying 2 nodes in the same AZ.
	AvailabilityZoneList []*string `json:"AvailabilityZoneList,omitnil,omitempty" name:"AvailabilityZoneList"`

	// Number of Mongos node CPU cores. Valid values: 1, 2, 4, 8, and 16. This parameter is required during sharded cluster instance purchase.
	MongosCpu *uint64 `json:"MongosCpu,omitnil,omitempty" name:"MongosCpu"`

	// Mongos node memory size.
	//  - This parameter is required during sharded cluster instance purchase.
	//  - Unit: GB. 1-core 2GB, 2-core 4GB, 4-core 8GB, 8-core 16GB, and 16-core 32GB are supported.
	MongosMemory *uint64 `json:"MongosMemory,omitnil,omitempty" name:"MongosMemory"`

	// Number of Mongos nodes. This parameter is required during sharded cluster instance purchase.
	//  - For instances in single-AZ deployment mode, the value range is [3,32].
	//  - For instances in multi-AZ deployment mode, the value range is [6,32].
	MongosNodeNum *uint64 `json:"MongosNodeNum,omitnil,omitempty" name:"MongosNodeNum"`

	// Number of read-only nodes. Value ranges: [0,5].
	ReadonlyNodeNum *uint64 `json:"ReadonlyNodeNum,omitnil,omitempty" name:"ReadonlyNodeNum"`

	// Array of AZs of read-only nodes. This parameter is required for instances in multi-AZ deployment mode when **ReadonlyNodeNum** is not set to **0**.
	ReadonlyNodeAvailabilityZoneList []*string `json:"ReadonlyNodeAvailabilityZoneList,omitnil,omitempty" name:"ReadonlyNodeAvailabilityZoneList"`

	// AZ of the hidden node. This parameter is required for instances in multi-AZ deployment mode.
	HiddenZone *string `json:"HiddenZone,omitnil,omitempty" name:"HiddenZone"`

	// Parameter template ID.
	// - A parameter template is a collection of predefined parameter values that can be used to quickly configure new MongoDB instances. Proper use of parameter templates can significantly enhance the deployment efficiency and operational performance of the database.
	// - The [DescribeDBInstanceParamTpl](https://www.tencentcloud.comom/document/product/240/109155?from_cn_redirect=1) API can be called to obtain the parameter template ID. Select the parameter template ID corresponding to the instance version and architecture.
	ParamTemplateId *string `json:"ParamTemplateId,omitnil,omitempty" name:"ParamTemplateId"`
}

func (r *CreateDBInstanceRequest) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *CreateDBInstanceRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "NodeNum")
	delete(f, "Memory")
	delete(f, "Volume")
	delete(f, "MongoVersion")
	delete(f, "GoodsNum")
	delete(f, "Zone")
	delete(f, "Period")
	delete(f, "MachineCode")
	delete(f, "ClusterType")
	delete(f, "ReplicateSetNum")
	delete(f, "ProjectId")
	delete(f, "VpcId")
	delete(f, "SubnetId")
	delete(f, "Password")
	delete(f, "Tags")
	delete(f, "AutoRenewFlag")
	delete(f, "AutoVoucher")
	delete(f, "Clone")
	delete(f, "Father")
	delete(f, "SecurityGroup")
	delete(f, "RestoreTime")
	delete(f, "InstanceName")
	delete(f, "AvailabilityZoneList")
	delete(f, "MongosCpu")
	delete(f, "MongosMemory")
	delete(f, "MongosNodeNum")
	delete(f, "ReadonlyNodeNum")
	delete(f, "ReadonlyNodeAvailabilityZoneList")
	delete(f, "HiddenZone")
	delete(f, "ParamTemplateId")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "CreateDBInstanceRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type CreateDBInstanceResponseParams struct {
	// Order ID.
	DealId *string `json:"DealId,omitnil,omitempty" name:"DealId"`

	// List of IDs of created instances.
	InstanceIds []*string `json:"InstanceIds,omitnil,omitempty" name:"InstanceIds"`

	// The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
	RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"`
}

type CreateDBInstanceResponse struct {
	*tchttp.BaseResponse
	Response *CreateDBInstanceResponseParams `json:"Response"`
}

func (r *CreateDBInstanceResponse) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *CreateDBInstanceResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type CreateLogDownloadTaskRequestParams struct {
	// Instance ID.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Start time.
	StartTime *string `json:"StartTime,omitnil,omitempty" name:"StartTime"`

	// End time.
	EndTime *string `json:"EndTime,omitnil,omitempty" name:"EndTime"`

	// Node name.
	NodeNames []*string `json:"NodeNames,omitnil,omitempty" name:"NodeNames"`

	// Log category.
	LogComponents []*string `json:"LogComponents,omitnil,omitempty" name:"LogComponents"`

	// Log level.
	LogLevels []*string `json:"LogLevels,omitnil,omitempty" name:"LogLevels"`

	// Log ID.
	LogIds []*string `json:"LogIds,omitnil,omitempty" name:"LogIds"`

	// Log connection information.
	LogConnections []*string `json:"LogConnections,omitnil,omitempty" name:"LogConnections"`

	// Filtering fields for log details.
	LogDetailParams []*string `json:"LogDetailParams,omitnil,omitempty" name:"LogDetailParams"`
}

type CreateLogDownloadTaskRequest struct {
	*tchttp.BaseRequest
	
	// Instance ID.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Start time.
	StartTime *string `json:"StartTime,omitnil,omitempty" name:"StartTime"`

	// End time.
	EndTime *string `json:"EndTime,omitnil,omitempty" name:"EndTime"`

	// Node name.
	NodeNames []*string `json:"NodeNames,omitnil,omitempty" name:"NodeNames"`

	// Log category.
	LogComponents []*string `json:"LogComponents,omitnil,omitempty" name:"LogComponents"`

	// Log level.
	LogLevels []*string `json:"LogLevels,omitnil,omitempty" name:"LogLevels"`

	// Log ID.
	LogIds []*string `json:"LogIds,omitnil,omitempty" name:"LogIds"`

	// Log connection information.
	LogConnections []*string `json:"LogConnections,omitnil,omitempty" name:"LogConnections"`

	// Filtering fields for log details.
	LogDetailParams []*string `json:"LogDetailParams,omitnil,omitempty" name:"LogDetailParams"`
}

func (r *CreateLogDownloadTaskRequest) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *CreateLogDownloadTaskRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "InstanceId")
	delete(f, "StartTime")
	delete(f, "EndTime")
	delete(f, "NodeNames")
	delete(f, "LogComponents")
	delete(f, "LogLevels")
	delete(f, "LogIds")
	delete(f, "LogConnections")
	delete(f, "LogDetailParams")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "CreateLogDownloadTaskRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type CreateLogDownloadTaskResponseParams struct {
	// Task status.
	Status *int64 `json:"Status,omitnil,omitempty" name:"Status"`

	// The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
	RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"`
}

type CreateLogDownloadTaskResponse struct {
	*tchttp.BaseResponse
	Response *CreateLogDownloadTaskResponseParams `json:"Response"`
}

func (r *CreateLogDownloadTaskResponse) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *CreateLogDownloadTaskResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

type DBInstanceInfo struct {
	// Instance ID
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Region information
	Region *string `json:"Region,omitnil,omitempty" name:"Region"`
}

type DBInstancePrice struct {
	// Unit price of the instance, in USD.
	UnitPrice *float64 `json:"UnitPrice,omitnil,omitempty" name:"UnitPrice"`

	// Original price of the instance, in USD.
	OriginalPrice *float64 `json:"OriginalPrice,omitnil,omitempty" name:"OriginalPrice"`

	// Discount price of the instance, in USD.
	DiscountPrice *float64 `json:"DiscountPrice,omitnil,omitempty" name:"DiscountPrice"`
}

// Predefined struct for user
type DeleteLogDownloadTaskRequestParams struct {
	// Instance ID.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Task ID.
	TaskId *string `json:"TaskId,omitnil,omitempty" name:"TaskId"`
}

type DeleteLogDownloadTaskRequest struct {
	*tchttp.BaseRequest
	
	// Instance ID.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Task ID.
	TaskId *string `json:"TaskId,omitnil,omitempty" name:"TaskId"`
}

func (r *DeleteLogDownloadTaskRequest) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *DeleteLogDownloadTaskRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "InstanceId")
	delete(f, "TaskId")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DeleteLogDownloadTaskRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DeleteLogDownloadTaskResponseParams struct {
	// Task status. 0: successful.
	Status *int64 `json:"Status,omitnil,omitempty" name:"Status"`

	// The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
	RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"`
}

type DeleteLogDownloadTaskResponse struct {
	*tchttp.BaseResponse
	Response *DeleteLogDownloadTaskResponseParams `json:"Response"`
}

func (r *DeleteLogDownloadTaskResponse) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *DeleteLogDownloadTaskResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeAsyncRequestInfoRequestParams struct {
	// Specifies the ID of the asynchronous request to be queried. When an asynchronous process is involved in the API operation (such as [CreateBackupDBInstance](https://www.tencentcloud.comom/document/product/240/46599?from_cn_redirect=1)), the response value of AsyncRequestId is the ID to be filled in for this parameter.
	AsyncRequestId *string `json:"AsyncRequestId,omitnil,omitempty" name:"AsyncRequestId"`
}

type DescribeAsyncRequestInfoRequest struct {
	*tchttp.BaseRequest
	
	// Specifies the ID of the asynchronous request to be queried. When an asynchronous process is involved in the API operation (such as [CreateBackupDBInstance](https://www.tencentcloud.comom/document/product/240/46599?from_cn_redirect=1)), the response value of AsyncRequestId is the ID to be filled in for this parameter.
	AsyncRequestId *string `json:"AsyncRequestId,omitnil,omitempty" name:"AsyncRequestId"`
}

func (r *DescribeAsyncRequestInfoRequest) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *DescribeAsyncRequestInfoRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "AsyncRequestId")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeAsyncRequestInfoRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeAsyncRequestInfoResponseParams struct {
	// Status. Valid values: `initial` (initializing), `running`, `paused` (paused due to failure), `undoed` (rolled back due to failure), `failed` (ended due to failure), `success`
	Status *string `json:"Status,omitnil,omitempty" name:"Status"`

	// Task execution start time.
	StartTime *string `json:"StartTime,omitnil,omitempty" name:"StartTime"`

	// Task execution end time.
	EndTime *string `json:"EndTime,omitnil,omitempty" name:"EndTime"`

	// The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
	RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"`
}

type DescribeAsyncRequestInfoResponse struct {
	*tchttp.BaseResponse
	Response *DescribeAsyncRequestInfoResponseParams `json:"Response"`
}

func (r *DescribeAsyncRequestInfoResponse) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *DescribeAsyncRequestInfoResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeBackupDownloadTaskRequestParams struct {
	// Instance ID. Log in to the [TencentDB for MongoDB console](https://console.cloud.tencent.com/mongodb), and copy the instance ID from the instance list.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Specifies the backup file name for filtering download tasks of the specified file. The [DescribeDBBackups](https://www.tencentcloud.comom/document/product/240/38574?from_cn_redirect=1) API can be called to obtain the backup file name.
	BackupName *string `json:"BackupName,omitnil,omitempty" name:"BackupName"`

	// Specifies the task within the query time range, and StartTime specifies the start time. If not specified, there are no limitations on the start time by default.
	StartTime *string `json:"StartTime,omitnil,omitempty" name:"StartTime"`

	// Specifies the task within the query time range, and EndTime specifies the end time. If not specified, there are no limitations on the end time by default.
	EndTime *string `json:"EndTime,omitnil,omitempty" name:"EndTime"`

	// Number of entries returned for this query. Value range: 1–100. The default value is 20.
	Limit *int64 `json:"Limit,omitnil,omitempty" name:"Limit"`

	// Specifies the number of pages returned for this query. The default value is 0.
	Offset *int64 `json:"Offset,omitnil,omitempty" name:"Offset"`

	// Sorting field.
	// - createTime: sort by the creation time of the backup download task. The default value is createTime.
	// - finishTime: sort by the completion time of the backup download task.
	OrderBy *string `json:"OrderBy,omitnil,omitempty" name:"OrderBy"`

	// Sorting method.
	// - asc: ascending order.
	// - desc: descending order. The default value is desc.
	OrderByType *string `json:"OrderByType,omitnil,omitempty" name:"OrderByType"`

	// Specifies the task status for filtering download tasks. If this parameter is not configured, tasks of all status types will be returned.
	// - 0: wait for execution.
	// - 1: downloading.
	// - 2: download completed.
	// - 3: download failed.
	// - 4: wait for retry.
	Status []*int64 `json:"Status,omitnil,omitempty" name:"Status"`
}

type DescribeBackupDownloadTaskRequest struct {
	*tchttp.BaseRequest
	
	// Instance ID. Log in to the [TencentDB for MongoDB console](https://console.cloud.tencent.com/mongodb), and copy the instance ID from the instance list.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Specifies the backup file name for filtering download tasks of the specified file. The [DescribeDBBackups](https://www.tencentcloud.comom/document/product/240/38574?from_cn_redirect=1) API can be called to obtain the backup file name.
	BackupName *string `json:"BackupName,omitnil,omitempty" name:"BackupName"`

	// Specifies the task within the query time range, and StartTime specifies the start time. If not specified, there are no limitations on the start time by default.
	StartTime *string `json:"StartTime,omitnil,omitempty" name:"StartTime"`

	// Specifies the task within the query time range, and EndTime specifies the end time. If not specified, there are no limitations on the end time by default.
	EndTime *string `json:"EndTime,omitnil,omitempty" name:"EndTime"`

	// Number of entries returned for this query. Value range: 1–100. The default value is 20.
	Limit *int64 `json:"Limit,omitnil,omitempty" name:"Limit"`

	// Specifies the number of pages returned for this query. The default value is 0.
	Offset *int64 `json:"Offset,omitnil,omitempty" name:"Offset"`

	// Sorting field.
	// - createTime: sort by the creation time of the backup download task. The default value is createTime.
	// - finishTime: sort by the completion time of the backup download task.
	OrderBy *string `json:"OrderBy,omitnil,omitempty" name:"OrderBy"`

	// Sorting method.
	// - asc: ascending order.
	// - desc: descending order. The default value is desc.
	OrderByType *string `json:"OrderByType,omitnil,omitempty" name:"OrderByType"`

	// Specifies the task status for filtering download tasks. If this parameter is not configured, tasks of all status types will be returned.
	// - 0: wait for execution.
	// - 1: downloading.
	// - 2: download completed.
	// - 3: download failed.
	// - 4: wait for retry.
	Status []*int64 `json:"Status,omitnil,omitempty" name:"Status"`
}

func (r *DescribeBackupDownloadTaskRequest) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *DescribeBackupDownloadTaskRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "InstanceId")
	delete(f, "BackupName")
	delete(f, "StartTime")
	delete(f, "EndTime")
	delete(f, "Limit")
	delete(f, "Offset")
	delete(f, "OrderBy")
	delete(f, "OrderByType")
	delete(f, "Status")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeBackupDownloadTaskRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeBackupDownloadTaskResponseParams struct {
	// All entries that meet the query conditions.
	TotalCount *int64 `json:"TotalCount,omitnil,omitempty" name:"TotalCount"`

	// Download task list.
	Tasks []*BackupDownloadTask `json:"Tasks,omitnil,omitempty" name:"Tasks"`

	// The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
	RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"`
}

type DescribeBackupDownloadTaskResponse struct {
	*tchttp.BaseResponse
	Response *DescribeBackupDownloadTaskResponseParams `json:"Response"`
}

func (r *DescribeBackupDownloadTaskResponse) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *DescribeBackupDownloadTaskResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeClientConnectionsRequestParams struct {
	// Specifies the ID of the instance to be queried. For example, cmgo-p8vn****. Log in to the [TencentDB for MongoDB console](https://console.cloud.tencent.com/MongoDB) and copy the instance ID from the instance list.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Number of entries returned per request. Minimum value: 1. Maximum value: 1000. Default value: 1000.
	Limit *uint64 `json:"Limit,omitnil,omitempty" name:"Limit"`

	// Offset. Default value: 0. Offset = Limit x (page number - 1).
	Offset *uint64 `json:"Offset,omitnil,omitempty" name:"Offset"`
}

type DescribeClientConnectionsRequest struct {
	*tchttp.BaseRequest
	
	// Specifies the ID of the instance to be queried. For example, cmgo-p8vn****. Log in to the [TencentDB for MongoDB console](https://console.cloud.tencent.com/MongoDB) and copy the instance ID from the instance list.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Number of entries returned per request. Minimum value: 1. Maximum value: 1000. Default value: 1000.
	Limit *uint64 `json:"Limit,omitnil,omitempty" name:"Limit"`

	// Offset. Default value: 0. Offset = Limit x (page number - 1).
	Offset *uint64 `json:"Offset,omitnil,omitempty" name:"Offset"`
}

func (r *DescribeClientConnectionsRequest) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *DescribeClientConnectionsRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "InstanceId")
	delete(f, "Limit")
	delete(f, "Offset")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeClientConnectionsRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeClientConnectionsResponseParams struct {
	// Client connection information, including the numbers of connections of the client IP address and the database access IP address.
	Clients []*ClientConnection `json:"Clients,omitnil,omitempty" name:"Clients"`

	// The total number of records that meet the query condition, which can be used for paginated queries.
	TotalCount *uint64 `json:"TotalCount,omitnil,omitempty" name:"TotalCount"`

	// The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
	RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"`
}

type DescribeClientConnectionsResponse struct {
	*tchttp.BaseResponse
	Response *DescribeClientConnectionsResponseParams `json:"Response"`
}

func (r *DescribeClientConnectionsResponse) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *DescribeClientConnectionsResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeDBBackupsRequestParams struct {
	// Instance ID. Log in to the [TencentDB for MongoDB console](https://console.cloud.tencent.com/mongodb), and copy the instance ID from the instance list.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Backup method.
	// - 0: logical backup.
	// - 1: physical backup.
	// - 3: snapshot backup.
	// **Note**:
	// 1. The General Edition instance supports logical and physical backup. The Cloud Disk Edition instance supports physical and snapshot backup, but does not support logical backup currently.
	// 2. Physical backup is not supported when storage encryption is enabled for the instance.
	BackupMethod *int64 `json:"BackupMethod,omitnil,omitempty" name:"BackupMethod"`

	// Number of entries per page. Maximum value: `100`. If this parameter is left empty, all entries will be returned.
	Limit *uint64 `json:"Limit,omitnil,omitempty" name:"Limit"`

	// Pagination offset, starting from `0`. Default value: `0`.
	Offset *uint64 `json:"Offset,omitnil,omitempty" name:"Offset"`
}

type DescribeDBBackupsRequest struct {
	*tchttp.BaseRequest
	
	// Instance ID. Log in to the [TencentDB for MongoDB console](https://console.cloud.tencent.com/mongodb), and copy the instance ID from the instance list.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Backup method.
	// - 0: logical backup.
	// - 1: physical backup.
	// - 3: snapshot backup.
	// **Note**:
	// 1. The General Edition instance supports logical and physical backup. The Cloud Disk Edition instance supports physical and snapshot backup, but does not support logical backup currently.
	// 2. Physical backup is not supported when storage encryption is enabled for the instance.
	BackupMethod *int64 `json:"BackupMethod,omitnil,omitempty" name:"BackupMethod"`

	// Number of entries per page. Maximum value: `100`. If this parameter is left empty, all entries will be returned.
	Limit *uint64 `json:"Limit,omitnil,omitempty" name:"Limit"`

	// Pagination offset, starting from `0`. Default value: `0`.
	Offset *uint64 `json:"Offset,omitnil,omitempty" name:"Offset"`
}

func (r *DescribeDBBackupsRequest) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *DescribeDBBackupsRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "InstanceId")
	delete(f, "BackupMethod")
	delete(f, "Limit")
	delete(f, "Offset")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeDBBackupsRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeDBBackupsResponseParams struct {
	// Backup list.
	BackupList []*BackupInfo `json:"BackupList,omitnil,omitempty" name:"BackupList"`

	// Number of backups.
	TotalCount *uint64 `json:"TotalCount,omitnil,omitempty" name:"TotalCount"`

	// The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
	RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"`
}

type DescribeDBBackupsResponse struct {
	*tchttp.BaseResponse
	Response *DescribeDBBackupsResponseParams `json:"Response"`
}

func (r *DescribeDBBackupsResponse) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *DescribeDBBackupsResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeDBInstanceDealRequestParams struct {
	// Order ID.
	// - Pay-as-you-go instance. It can be obtained through the output parameter **DealId** of the [CreateDBInstanceHour](https://www.tencentcloud.comom/document/product/240/38570?from_cn_redirect=1) API.
	// - Yearly/monthly subscription instance. It can be obtained through the output parameter **DealId** of the [CreateDBInstance](https://www.tencentcloud.comom/document/product/240/38571?from_cn_redirect=1) API.
	DealId *string `json:"DealId,omitnil,omitempty" name:"DealId"`
}

type DescribeDBInstanceDealRequest struct {
	*tchttp.BaseRequest
	
	// Order ID.
	// - Pay-as-you-go instance. It can be obtained through the output parameter **DealId** of the [CreateDBInstanceHour](https://www.tencentcloud.comom/document/product/240/38570?from_cn_redirect=1) API.
	// - Yearly/monthly subscription instance. It can be obtained through the output parameter **DealId** of the [CreateDBInstance](https://www.tencentcloud.comom/document/product/240/38571?from_cn_redirect=1) API.
	DealId *string `json:"DealId,omitnil,omitempty" name:"DealId"`
}

func (r *DescribeDBInstanceDealRequest) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *DescribeDBInstanceDealRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "DealId")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeDBInstanceDealRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeDBInstanceDealResponseParams struct {
	// Order status.
	// - 1: unpaid.
	// - 2: paid.
	// - 3: delivering.
	// - 4: delivered successfully.
	// - 5: delivery failed.
	// - 6: refund.
	// - 7: order closed.
	// - 8: closed due to unpaid timeout.
	Status *int64 `json:"Status,omitnil,omitempty" name:"Status"`

	// Original price of the order, in USD.
	OriginalPrice *float64 `json:"OriginalPrice,omitnil,omitempty" name:"OriginalPrice"`

	// Discount price of the order, in USD.
	DiscountPrice *float64 `json:"DiscountPrice,omitnil,omitempty" name:"DiscountPrice"`

	// Order operation behavior.
	// - purchase: newly purchased.
	// - renew: renewed.
	// - upgrade: configuration upgraded.
	// - downgrade: configuration downgraded.
	// - refund: return and refund.
	Action *string `json:"Action,omitnil,omitempty" name:"Action"`

	// Instance ID of the current order.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
	RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"`
}

type DescribeDBInstanceDealResponse struct {
	*tchttp.BaseResponse
	Response *DescribeDBInstanceDealResponseParams `json:"Response"`
}

func (r *DescribeDBInstanceDealResponse) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *DescribeDBInstanceDealResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeDBInstanceNamespaceRequestParams struct {
	// Specifies the instance ID for querying the database. Batch querying is supported. Log in to the [TencentDB for MongoDB console](https://console.cloud.tencent.com/MongoDB) and copy the instance ID from the instance list.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Specifies the database name for querying. If this parameter is left blank, a list of all databases of the current instance is returned.
	DbName *string `json:"DbName,omitnil,omitempty" name:"DbName"`
}

type DescribeDBInstanceNamespaceRequest struct {
	*tchttp.BaseRequest
	
	// Specifies the instance ID for querying the database. Batch querying is supported. Log in to the [TencentDB for MongoDB console](https://console.cloud.tencent.com/MongoDB) and copy the instance ID from the instance list.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Specifies the database name for querying. If this parameter is left blank, a list of all databases of the current instance is returned.
	DbName *string `json:"DbName,omitnil,omitempty" name:"DbName"`
}

func (r *DescribeDBInstanceNamespaceRequest) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *DescribeDBInstanceNamespaceRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "InstanceId")
	delete(f, "DbName")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeDBInstanceNamespaceRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeDBInstanceNamespaceResponseParams struct {
	// List of databases of the queried instance. If no database is specified for querying with DbName, a list of databases of only the queried instance is returned instead of the information indicated by Collections.
	Databases []*string `json:"Databases,omitnil,omitempty" name:"Databases"`

	// Queried collection information. If DbName is specified, a list of collections of only this database is returned.
	Collections []*string `json:"Collections,omitnil,omitempty" name:"Collections"`

	// The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
	RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"`
}

type DescribeDBInstanceNamespaceResponse struct {
	*tchttp.BaseResponse
	Response *DescribeDBInstanceNamespaceResponseParams `json:"Response"`
}

func (r *DescribeDBInstanceNamespaceResponse) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *DescribeDBInstanceNamespaceResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeDBInstanceNodePropertyRequestParams struct {
	// Instance ID. Log in to the [TencentDB for MongoDB console](https://console.cloud.tencent.com/mongodb), and copy the instance ID from the instance list.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Node ID. Log in to the [TencentDB for MongoDB console](https://console.cloud.tencent.com/mongodb), go to Node Management, and copy the node ID.
	NodeIds []*string `json:"NodeIds,omitnil,omitempty" name:"NodeIds"`

	// Node role. Valid values:
	// - PRIMARY: primary node.
	// - SECONDARY: secondary node.
	// - READONLY: read-only node.
	// - ARBITER: arbitration node.
	Roles []*string `json:"Roles,omitnil,omitempty" name:"Roles"`

	// Whether the node is a hidden node. Default value: false.
	OnlyHidden *bool `json:"OnlyHidden,omitnil,omitempty" name:"OnlyHidden"`

	// Priority of the node for electing it as the new primary node. Value range: [0, 100]. A larger value indicates a higher priority.
	Priority *int64 `json:"Priority,omitnil,omitempty" name:"Priority"`

	// Node voting right.- 1: The node has the right to vote.
	// - 0: The node does not have the right to vote.
	Votes *int64 `json:"Votes,omitnil,omitempty" name:"Votes"`

	// Node tag.
	Tags []*NodeTag `json:"Tags,omitnil,omitempty" name:"Tags"`
}

type DescribeDBInstanceNodePropertyRequest struct {
	*tchttp.BaseRequest
	
	// Instance ID. Log in to the [TencentDB for MongoDB console](https://console.cloud.tencent.com/mongodb), and copy the instance ID from the instance list.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Node ID. Log in to the [TencentDB for MongoDB console](https://console.cloud.tencent.com/mongodb), go to Node Management, and copy the node ID.
	NodeIds []*string `json:"NodeIds,omitnil,omitempty" name:"NodeIds"`

	// Node role. Valid values:
	// - PRIMARY: primary node.
	// - SECONDARY: secondary node.
	// - READONLY: read-only node.
	// - ARBITER: arbitration node.
	Roles []*string `json:"Roles,omitnil,omitempty" name:"Roles"`

	// Whether the node is a hidden node. Default value: false.
	OnlyHidden *bool `json:"OnlyHidden,omitnil,omitempty" name:"OnlyHidden"`

	// Priority of the node for electing it as the new primary node. Value range: [0, 100]. A larger value indicates a higher priority.
	Priority *int64 `json:"Priority,omitnil,omitempty" name:"Priority"`

	// Node voting right.- 1: The node has the right to vote.
	// - 0: The node does not have the right to vote.
	Votes *int64 `json:"Votes,omitnil,omitempty" name:"Votes"`

	// Node tag.
	Tags []*NodeTag `json:"Tags,omitnil,omitempty" name:"Tags"`
}

func (r *DescribeDBInstanceNodePropertyRequest) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *DescribeDBInstanceNodePropertyRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "InstanceId")
	delete(f, "NodeIds")
	delete(f, "Roles")
	delete(f, "OnlyHidden")
	delete(f, "Priority")
	delete(f, "Votes")
	delete(f, "Tags")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeDBInstanceNodePropertyRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeDBInstanceNodePropertyResponseParams struct {
	// Mongos node attributes.
	Mongos []*NodeProperty `json:"Mongos,omitnil,omitempty" name:"Mongos"`

	// Replica set node information.
	ReplicateSets []*ReplicateSetInfo `json:"ReplicateSets,omitnil,omitempty" name:"ReplicateSets"`

	// The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
	RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"`
}

type DescribeDBInstanceNodePropertyResponse struct {
	*tchttp.BaseResponse
	Response *DescribeDBInstanceNodePropertyResponseParams `json:"Response"`
}

func (r *DescribeDBInstanceNodePropertyResponse) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *DescribeDBInstanceNodePropertyResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeDBInstancesRequestParams struct {
	// Instance ID list. Log in to the [TencentDB for MongoDB console](https://console.cloud.tencent.com/mongodb), and copy the instance ID from the instance list.
	InstanceIds []*string `json:"InstanceIds,omitnil,omitempty" name:"InstanceIds"`

	// Specifies the instance type for querying. Valid values:
	// - 0: all instances.
	// - 1: formal instance.
	// - 2: temporary instance.
	// - 3: read-only instance.
	// - -1: the query range includes the formal, read-only, and disaster recovery instances simultaneously.
	InstanceType *int64 `json:"InstanceType,omitnil,omitempty" name:"InstanceType"`

	// Specifies the cluster type of the instance to be queried. Valid values:
	// - 0: replica set instance.
	// - 1: sharded cluster instance.
	// - -1: replica set and sharded cluster instance.
	ClusterType *int64 `json:"ClusterType,omitnil,omitempty" name:"ClusterType"`

	// Specifies the current status of the instance to be queried. Valid values:
	// - 0: to be initialized.
	// - 1: processing, such as specification changes and parameter modifications.
	// - 2: running normally.
	// - -2: isolated (yearly/monthly subscription).
	// - -3: isolated (pay-as-you-go).
	Status []*int64 `json:"Status,omitnil,omitempty" name:"Status"`

	// VPC ID.
	//  - You do not need to specify this parameter for basic networks.
	//  - Log in to the [TencentDB for MongoDB console](https://console.cloud.tencent.com/MongoDB), click a VPC name in the instance list, and obtain the ID on the **VPC** page.
	VpcId *string `json:"VpcId,omitnil,omitempty" name:"VpcId"`

	// VPC subnet ID.
	//  - You do not need to specify this parameter for basic networks.
	//  - Log in to the [TencentDB for MongoDB console](https://console.cloud.tencent.com/MongoDB), click a VPC name in the instance list, and obtain the subnet ID on the **VPC** page.
	SubnetId *string `json:"SubnetId,omitnil,omitempty" name:"SubnetId"`

	// Billing type. Valid value: 0 (pay-as-you-go)
	PayMode *int64 `json:"PayMode,omitnil,omitempty" name:"PayMode"`

	// Number of entries returned per request. The default value is 20, and the value range is (1, 100].
	Limit *uint64 `json:"Limit,omitnil,omitempty" name:"Limit"`

	// Offset. Default value: `0`.
	Offset *uint64 `json:"Offset,omitnil,omitempty" name:"Offset"`

	// Configures the field for sorting returned results. Currently, "ProjectId", "InstanceName", and "CreateTime" are supported for sorting.
	OrderBy *string `json:"OrderBy,omitnil,omitempty" name:"OrderBy"`

	// Configures the method for sorting returned results.
	//  - ASC: ascending order.
	//  - DESC: descending order.
	OrderByType *string `json:"OrderByType,omitnil,omitempty" name:"OrderByType"`

	// Project ID. Log in to the [TencentDB for MongoDB console](https://console.cloud.tencent.com/MongoDB) and select Project Management in the account information drop-down menu at the top right corner to query projects.
	ProjectIds []*uint64 `json:"ProjectIds,omitnil,omitempty" name:"ProjectIds"`

	// Specifies the keyword for search. Specific instance IDs, instance names, or private IP addresses are supported.
	SearchKey *string `json:"SearchKey,omitnil,omitempty" name:"SearchKey"`

	// Tag information, including the tag key and tag value.
	Tags []*TagInfo `json:"Tags,omitnil,omitempty" name:"Tags"`
}

type DescribeDBInstancesRequest struct {
	*tchttp.BaseRequest
	
	// Instance ID list. Log in to the [TencentDB for MongoDB console](https://console.cloud.tencent.com/mongodb), and copy the instance ID from the instance list.
	InstanceIds []*string `json:"InstanceIds,omitnil,omitempty" name:"InstanceIds"`

	// Specifies the instance type for querying. Valid values:
	// - 0: all instances.
	// - 1: formal instance.
	// - 2: temporary instance.
	// - 3: read-only instance.
	// - -1: the query range includes the formal, read-only, and disaster recovery instances simultaneously.
	InstanceType *int64 `json:"InstanceType,omitnil,omitempty" name:"InstanceType"`

	// Specifies the cluster type of the instance to be queried. Valid values:
	// - 0: replica set instance.
	// - 1: sharded cluster instance.
	// - -1: replica set and sharded cluster instance.
	ClusterType *int64 `json:"ClusterType,omitnil,omitempty" name:"ClusterType"`

	// Specifies the current status of the instance to be queried. Valid values:
	// - 0: to be initialized.
	// - 1: processing, such as specification changes and parameter modifications.
	// - 2: running normally.
	// - -2: isolated (yearly/monthly subscription).
	// - -3: isolated (pay-as-you-go).
	Status []*int64 `json:"Status,omitnil,omitempty" name:"Status"`

	// VPC ID.
	//  - You do not need to specify this parameter for basic networks.
	//  - Log in to the [TencentDB for MongoDB console](https://console.cloud.tencent.com/MongoDB), click a VPC name in the instance list, and obtain the ID on the **VPC** page.
	VpcId *string `json:"VpcId,omitnil,omitempty" name:"VpcId"`

	// VPC subnet ID.
	//  - You do not need to specify this parameter for basic networks.
	//  - Log in to the [TencentDB for MongoDB console](https://console.cloud.tencent.com/MongoDB), click a VPC name in the instance list, and obtain the subnet ID on the **VPC** page.
	SubnetId *string `json:"SubnetId,omitnil,omitempty" name:"SubnetId"`

	// Billing type. Valid value: 0 (pay-as-you-go)
	PayMode *int64 `json:"PayMode,omitnil,omitempty" name:"PayMode"`

	// Number of entries returned per request. The default value is 20, and the value range is (1, 100].
	Limit *uint64 `json:"Limit,omitnil,omitempty" name:"Limit"`

	// Offset. Default value: `0`.
	Offset *uint64 `json:"Offset,omitnil,omitempty" name:"Offset"`

	// Configures the field for sorting returned results. Currently, "ProjectId", "InstanceName", and "CreateTime" are supported for sorting.
	OrderBy *string `json:"OrderBy,omitnil,omitempty" name:"OrderBy"`

	// Configures the method for sorting returned results.
	//  - ASC: ascending order.
	//  - DESC: descending order.
	OrderByType *string `json:"OrderByType,omitnil,omitempty" name:"OrderByType"`

	// Project ID. Log in to the [TencentDB for MongoDB console](https://console.cloud.tencent.com/MongoDB) and select Project Management in the account information drop-down menu at the top right corner to query projects.
	ProjectIds []*uint64 `json:"ProjectIds,omitnil,omitempty" name:"ProjectIds"`

	// Specifies the keyword for search. Specific instance IDs, instance names, or private IP addresses are supported.
	SearchKey *string `json:"SearchKey,omitnil,omitempty" name:"SearchKey"`

	// Tag information, including the tag key and tag value.
	Tags []*TagInfo `json:"Tags,omitnil,omitempty" name:"Tags"`
}

func (r *DescribeDBInstancesRequest) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *DescribeDBInstancesRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "InstanceIds")
	delete(f, "InstanceType")
	delete(f, "ClusterType")
	delete(f, "Status")
	delete(f, "VpcId")
	delete(f, "SubnetId")
	delete(f, "PayMode")
	delete(f, "Limit")
	delete(f, "Offset")
	delete(f, "OrderBy")
	delete(f, "OrderByType")
	delete(f, "ProjectIds")
	delete(f, "SearchKey")
	delete(f, "Tags")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeDBInstancesRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeDBInstancesResponseParams struct {
	// Number of eligible instances
	TotalCount *uint64 `json:"TotalCount,omitnil,omitempty" name:"TotalCount"`

	// List of instance details
	InstanceDetails []*InstanceDetail `json:"InstanceDetails,omitnil,omitempty" name:"InstanceDetails"`

	// The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
	RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"`
}

type DescribeDBInstancesResponse struct {
	*tchttp.BaseResponse
	Response *DescribeDBInstancesResponseParams `json:"Response"`
}

func (r *DescribeDBInstancesResponse) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *DescribeDBInstancesResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeDetailedSlowLogsRequestParams struct {
	// Instance ID. Log in to the [TencentDB for MongoDB console](https://console.cloud.tencent.com/mongodb), and copy the instance ID from the instance list.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Specifies the start time for querying slow logs. - Format: yyyy-mm-dd hh:mm:ss. For example, 2019-06-01 10:00:00. - The query start and end time interval cannot exceed 24 hours. Only slow logs within the last 7 days can be queried.
	StartTime *string `json:"StartTime,omitnil,omitempty" name:"StartTime"`

	// Specifies the end time for querying slow logs.
	// - Format: yyyy-mm-dd hh:mm:ss. For example, 2019-06-02 12:00:00.
	// - The query start and end time interval cannot exceed 24 hours. Only slow logs within the last 7 days can be queried.
	EndTime *string `json:"EndTime,omitnil,omitempty" name:"EndTime"`

	// Specifies the threshold for querying slow logs, in milliseconds. It indicates that the execution time of the slow log query exceeds this value. The default value is 100.
	ExecTime *int64 `json:"ExecTime,omitnil,omitempty" name:"ExecTime"`

	// Specifies the command type for querying slow logs.
	Commands []*string `json:"Commands,omitnil,omitempty" name:"Commands"`

	// Full-text search keyword. The logical operator among multiple keywords is OR.
	Texts []*string `json:"Texts,omitnil,omitempty" name:"Texts"`

	// Specifies the node name for querying slow logs. The [DescribeDBInstanceNodeProperty](https://www.tencentcloud.comom/document/product/240/82022?from_cn_redirect=1) API can be called to query the node name.
	NodeNames []*string `json:"NodeNames,omitnil,omitempty" name:"NodeNames"`

	// Specifies the queryHash value to be queried.
	QueryHash []*string `json:"QueryHash,omitnil,omitempty" name:"QueryHash"`

	// Pagination offset. The default value is 0, and the value range is [0, 100].
	Offset *int64 `json:"Offset,omitnil,omitempty" name:"Offset"`

	// Number of returned entries. The default value is 20, and the value range is [0, 10000].
	Limit *int64 `json:"Limit,omitnil,omitempty" name:"Limit"`

	// Specifies the sorting condition for slow logs.
	// - StartTime: sort by the generation time of slow logs.
	// - ExecTime: sort by the execution time of slow logs.
	OrderBy *string `json:"OrderBy,omitnil,omitempty" name:"OrderBy"`

	// Specifies the sorting method.
	// - desc: descending order.
	// - asc: ascending order.
	OrderByType *string `json:"OrderByType,omitnil,omitempty" name:"OrderByType"`
}

type DescribeDetailedSlowLogsRequest struct {
	*tchttp.BaseRequest
	
	// Instance ID. Log in to the [TencentDB for MongoDB console](https://console.cloud.tencent.com/mongodb), and copy the instance ID from the instance list.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Specifies the start time for querying slow logs. - Format: yyyy-mm-dd hh:mm:ss. For example, 2019-06-01 10:00:00. - The query start and end time interval cannot exceed 24 hours. Only slow logs within the last 7 days can be queried.
	StartTime *string `json:"StartTime,omitnil,omitempty" name:"StartTime"`

	// Specifies the end time for querying slow logs.
	// - Format: yyyy-mm-dd hh:mm:ss. For example, 2019-06-02 12:00:00.
	// - The query start and end time interval cannot exceed 24 hours. Only slow logs within the last 7 days can be queried.
	EndTime *string `json:"EndTime,omitnil,omitempty" name:"EndTime"`

	// Specifies the threshold for querying slow logs, in milliseconds. It indicates that the execution time of the slow log query exceeds this value. The default value is 100.
	ExecTime *int64 `json:"ExecTime,omitnil,omitempty" name:"ExecTime"`

	// Specifies the command type for querying slow logs.
	Commands []*string `json:"Commands,omitnil,omitempty" name:"Commands"`

	// Full-text search keyword. The logical operator among multiple keywords is OR.
	Texts []*string `json:"Texts,omitnil,omitempty" name:"Texts"`

	// Specifies the node name for querying slow logs. The [DescribeDBInstanceNodeProperty](https://www.tencentcloud.comom/document/product/240/82022?from_cn_redirect=1) API can be called to query the node name.
	NodeNames []*string `json:"NodeNames,omitnil,omitempty" name:"NodeNames"`

	// Specifies the queryHash value to be queried.
	QueryHash []*string `json:"QueryHash,omitnil,omitempty" name:"QueryHash"`

	// Pagination offset. The default value is 0, and the value range is [0, 100].
	Offset *int64 `json:"Offset,omitnil,omitempty" name:"Offset"`

	// Number of returned entries. The default value is 20, and the value range is [0, 10000].
	Limit *int64 `json:"Limit,omitnil,omitempty" name:"Limit"`

	// Specifies the sorting condition for slow logs.
	// - StartTime: sort by the generation time of slow logs.
	// - ExecTime: sort by the execution time of slow logs.
	OrderBy *string `json:"OrderBy,omitnil,omitempty" name:"OrderBy"`

	// Specifies the sorting method.
	// - desc: descending order.
	// - asc: ascending order.
	OrderByType *string `json:"OrderByType,omitnil,omitempty" name:"OrderByType"`
}

func (r *DescribeDetailedSlowLogsRequest) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *DescribeDetailedSlowLogsRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "InstanceId")
	delete(f, "StartTime")
	delete(f, "EndTime")
	delete(f, "ExecTime")
	delete(f, "Commands")
	delete(f, "Texts")
	delete(f, "NodeNames")
	delete(f, "QueryHash")
	delete(f, "Offset")
	delete(f, "Limit")
	delete(f, "OrderBy")
	delete(f, "OrderByType")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeDetailedSlowLogsRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeDetailedSlowLogsResponseParams struct {
	// Number of slow logs that meet the conditions.
	TotalCount *int64 `json:"TotalCount,omitnil,omitempty" name:"TotalCount"`

	// Slow log details.
	DetailedSlowLogs []*SlowLogItem `json:"DetailedSlowLogs,omitnil,omitempty" name:"DetailedSlowLogs"`

	// The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
	RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"`
}

type DescribeDetailedSlowLogsResponse struct {
	*tchttp.BaseResponse
	Response *DescribeDetailedSlowLogsResponseParams `json:"Response"`
}

func (r *DescribeDetailedSlowLogsResponse) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *DescribeDetailedSlowLogsResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeInstanceParamsRequestParams struct {
	// Specifies the instance ID for querying the parameter list. For example, cmgo-p8vn****. Log in to the [TencentDB for MongoDB console](https://console.cloud.tencent.com/MongoDB) and copy the instance ID from the instance list.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`
}

type DescribeInstanceParamsRequest struct {
	*tchttp.BaseRequest
	
	// Specifies the instance ID for querying the parameter list. For example, cmgo-p8vn****. Log in to the [TencentDB for MongoDB console](https://console.cloud.tencent.com/MongoDB) and copy the instance ID from the instance list.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`
}

func (r *DescribeInstanceParamsRequest) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *DescribeInstanceParamsRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "InstanceId")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeInstanceParamsRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeInstanceParamsResponseParams struct {
	// Collection of parameters whose values are of the Enum type.
	InstanceEnumParam []*InstanceEnumParam `json:"InstanceEnumParam,omitnil,omitempty" name:"InstanceEnumParam"`

	// Collection of parameters whose values are of the Integer type.
	InstanceIntegerParam []*InstanceIntegerParam `json:"InstanceIntegerParam,omitnil,omitempty" name:"InstanceIntegerParam"`

	// Collection of parameters whose values are of the Text type.
	InstanceTextParam []*InstanceTextParam `json:"InstanceTextParam,omitnil,omitempty" name:"InstanceTextParam"`

	// Collection of parameters whose values are of different types.
	InstanceMultiParam []*InstanceMultiParam `json:"InstanceMultiParam,omitnil,omitempty" name:"InstanceMultiParam"`

	// Number of modifiable parameters supported by the current instance.
	TotalCount *uint64 `json:"TotalCount,omitnil,omitempty" name:"TotalCount"`

	// The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
	RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"`
}

type DescribeInstanceParamsResponse struct {
	*tchttp.BaseResponse
	Response *DescribeInstanceParamsResponseParams `json:"Response"`
}

func (r *DescribeInstanceParamsResponse) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *DescribeInstanceParamsResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeInstanceSSLRequestParams struct {
	// Instance ID, in the format of cmgo-p8vnipr5. It is the same as the format of the instance ID displayed on the TencentDB for MongoDB console page.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`
}

type DescribeInstanceSSLRequest struct {
	*tchttp.BaseRequest
	
	// Instance ID, in the format of cmgo-p8vnipr5. It is the same as the format of the instance ID displayed on the TencentDB for MongoDB console page.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`
}

func (r *DescribeInstanceSSLRequest) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *DescribeInstanceSSLRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "InstanceId")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeInstanceSSLRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeInstanceSSLResponseParams struct {
	// SSL enabling status. 0 indicates disabled; 1 indicates enabled.
	// Note: This field may return null, indicating that no valid values can be obtained.
	Status *int64 `json:"Status,omitnil,omitempty" name:"Status"`

	// Certificate expiration time, in the format of 2023-05-01 12:00:00.
	// Note: This field may return null, indicating that no valid values can be obtained.
	ExpiredTime *string `json:"ExpiredTime,omitnil,omitempty" name:"ExpiredTime"`

	// Certificate download URL.
	// Note: This field may return null, indicating that no valid values can be obtained.
	CertUrl *string `json:"CertUrl,omitnil,omitempty" name:"CertUrl"`

	// The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
	RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"`
}

type DescribeInstanceSSLResponse struct {
	*tchttp.BaseResponse
	Response *DescribeInstanceSSLResponseParams `json:"Response"`
}

func (r *DescribeInstanceSSLResponse) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *DescribeInstanceSSLResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeLogDownloadTasksRequestParams struct {
	// Instance ID.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Number of queries.
	Limit *int64 `json:"Limit,omitnil,omitempty" name:"Limit"`

	// Page number.
	Offset *int64 `json:"Offset,omitnil,omitempty" name:"Offset"`

	// Start time of the download task.
	StartTime *string `json:"StartTime,omitnil,omitempty" name:"StartTime"`

	// End time of the download task.
	EndTime *string `json:"EndTime,omitnil,omitempty" name:"EndTime"`
}

type DescribeLogDownloadTasksRequest struct {
	*tchttp.BaseRequest
	
	// Instance ID.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Number of queries.
	Limit *int64 `json:"Limit,omitnil,omitempty" name:"Limit"`

	// Page number.
	Offset *int64 `json:"Offset,omitnil,omitempty" name:"Offset"`

	// Start time of the download task.
	StartTime *string `json:"StartTime,omitnil,omitempty" name:"StartTime"`

	// End time of the download task.
	EndTime *string `json:"EndTime,omitnil,omitempty" name:"EndTime"`
}

func (r *DescribeLogDownloadTasksRequest) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *DescribeLogDownloadTasksRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "InstanceId")
	delete(f, "Limit")
	delete(f, "Offset")
	delete(f, "StartTime")
	delete(f, "EndTime")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeLogDownloadTasksRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeLogDownloadTasksResponseParams struct {
	// Quantity.
	TotalCount *int64 `json:"TotalCount,omitnil,omitempty" name:"TotalCount"`

	// Task list.
	// Note: This field may return null, indicating that no valid values can be obtained.
	Tasks []*Task `json:"Tasks,omitnil,omitempty" name:"Tasks"`

	// The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
	RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"`
}

type DescribeLogDownloadTasksResponse struct {
	*tchttp.BaseResponse
	Response *DescribeLogDownloadTasksResponseParams `json:"Response"`
}

func (r *DescribeLogDownloadTasksResponse) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *DescribeLogDownloadTasksResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeMongodbLogsRequestParams struct {
	// Instance ID. Log in to the [TencentDB for MongoDB console](https://console.cloud.tencent.com/mongodb#/), and copy the instance ID from the instance list.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Start time for querying logs.
	// - Format: yyyy-mm-dd hh:mm:ss. For example, 2019-06-01 10:00:00.
	// - Query time range: Only log data within the last 7 days can be queried.
	StartTime *string `json:"StartTime,omitnil,omitempty" name:"StartTime"`

	// End time for querying logs.
	// - Format: yyyy-mm-dd hh:mm:ss. For example, 2019-06-01 10:00:00.
	// - Query time range: Only log data within the last 7 days can be queried.
	EndTime *string `json:"EndTime,omitnil,omitempty" name:"EndTime"`

	// Node ID. Log in to the [TencentDB for MongoDB console](https://console.cloud.tencent.com/mongodb), and go to the **Node Management** page to obtain the ID of the node to be queried.
	NodeNames []*string `json:"NodeNames,omitnil,omitempty" name:"NodeNames"`

	// Log category.
	// - Log categories include but are not limited to COMMAND, ACCESS, CONTROL, FTDC, INDEX, NETWORK, QUERY, REPL, SHARDING, STORAGE, RECOVERY, JOURNAL, and WRITE. The specific supported categories may vary depending on the MongoDB version. For details, see Log Messages (https://www.mongodb.com/zh-cn/docs/v5.0/reference/log-messages/#log-message-examples).
	// - Log in to the [TencentDB for MongoDB console](https://console.cloud.tencent.com/mongodb), and view the **log category** on the **Error Log** tab of the **Log Management** page.
	LogComponents []*string `json:"LogComponents,omitnil,omitempty" name:"LogComponents"`

	// Log level.
	// - The log levels are ranked by severity from high to low: FATAL, ERROR, and WARNING.
	// -Log in to the [TencentDB for MongoDB console](https://console.cloud.tencent.com/mongodb), and view the **log level** on the **Error Log** tab of the **Log Management** page.
	LogLevels []*string `json:"LogLevels,omitnil,omitempty" name:"LogLevels"`

	// Log ID. Log in to the [TencentDB for MongoDB console](https://console.cloud.tencent.com/mongodb), and view the **log ID** on the **Error Log** tab of the **Log Management** page.
	LogIds []*string `json:"LogIds,omitnil,omitempty" name:"LogIds"`

	// Log connection information. Log in to the [TencentDB for MongoDB console](https://console.cloud.tencent.com/mongodb), and view the **log connection information** on the **Error Log** tab of the **Log Management** page.
	LogConnections []*string `json:"LogConnections,omitnil,omitempty" name:"LogConnections"`

	// Specifies the field for filtering the logs.
	LogDetailParams []*string `json:"LogDetailParams,omitnil,omitempty" name:"LogDetailParams"`

	// Offset. The minimum value is 0, and the maximum value is 10000. The default value is 0.
	Offset *int64 `json:"Offset,omitnil,omitempty" name:"Offset"`

	// Pagination size. The minimum value is 1, and the maximum value is 100. The default value is 20.
	Limit *int64 `json:"Limit,omitnil,omitempty" name:"Limit"`
}

type DescribeMongodbLogsRequest struct {
	*tchttp.BaseRequest
	
	// Instance ID. Log in to the [TencentDB for MongoDB console](https://console.cloud.tencent.com/mongodb#/), and copy the instance ID from the instance list.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Start time for querying logs.
	// - Format: yyyy-mm-dd hh:mm:ss. For example, 2019-06-01 10:00:00.
	// - Query time range: Only log data within the last 7 days can be queried.
	StartTime *string `json:"StartTime,omitnil,omitempty" name:"StartTime"`

	// End time for querying logs.
	// - Format: yyyy-mm-dd hh:mm:ss. For example, 2019-06-01 10:00:00.
	// - Query time range: Only log data within the last 7 days can be queried.
	EndTime *string `json:"EndTime,omitnil,omitempty" name:"EndTime"`

	// Node ID. Log in to the [TencentDB for MongoDB console](https://console.cloud.tencent.com/mongodb), and go to the **Node Management** page to obtain the ID of the node to be queried.
	NodeNames []*string `json:"NodeNames,omitnil,omitempty" name:"NodeNames"`

	// Log category.
	// - Log categories include but are not limited to COMMAND, ACCESS, CONTROL, FTDC, INDEX, NETWORK, QUERY, REPL, SHARDING, STORAGE, RECOVERY, JOURNAL, and WRITE. The specific supported categories may vary depending on the MongoDB version. For details, see Log Messages (https://www.mongodb.com/zh-cn/docs/v5.0/reference/log-messages/#log-message-examples).
	// - Log in to the [TencentDB for MongoDB console](https://console.cloud.tencent.com/mongodb), and view the **log category** on the **Error Log** tab of the **Log Management** page.
	LogComponents []*string `json:"LogComponents,omitnil,omitempty" name:"LogComponents"`

	// Log level.
	// - The log levels are ranked by severity from high to low: FATAL, ERROR, and WARNING.
	// -Log in to the [TencentDB for MongoDB console](https://console.cloud.tencent.com/mongodb), and view the **log level** on the **Error Log** tab of the **Log Management** page.
	LogLevels []*string `json:"LogLevels,omitnil,omitempty" name:"LogLevels"`

	// Log ID. Log in to the [TencentDB for MongoDB console](https://console.cloud.tencent.com/mongodb), and view the **log ID** on the **Error Log** tab of the **Log Management** page.
	LogIds []*string `json:"LogIds,omitnil,omitempty" name:"LogIds"`

	// Log connection information. Log in to the [TencentDB for MongoDB console](https://console.cloud.tencent.com/mongodb), and view the **log connection information** on the **Error Log** tab of the **Log Management** page.
	LogConnections []*string `json:"LogConnections,omitnil,omitempty" name:"LogConnections"`

	// Specifies the field for filtering the logs.
	LogDetailParams []*string `json:"LogDetailParams,omitnil,omitempty" name:"LogDetailParams"`

	// Offset. The minimum value is 0, and the maximum value is 10000. The default value is 0.
	Offset *int64 `json:"Offset,omitnil,omitempty" name:"Offset"`

	// Pagination size. The minimum value is 1, and the maximum value is 100. The default value is 20.
	Limit *int64 `json:"Limit,omitnil,omitempty" name:"Limit"`
}

func (r *DescribeMongodbLogsRequest) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *DescribeMongodbLogsRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "InstanceId")
	delete(f, "StartTime")
	delete(f, "EndTime")
	delete(f, "NodeNames")
	delete(f, "LogComponents")
	delete(f, "LogLevels")
	delete(f, "LogIds")
	delete(f, "LogConnections")
	delete(f, "LogDetailParams")
	delete(f, "Offset")
	delete(f, "Limit")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeMongodbLogsRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeMongodbLogsResponseParams struct {
	// Total number of logs.
	TotalCount *int64 `json:"TotalCount,omitnil,omitempty" name:"TotalCount"`

	// List of log details.
	// Note: This field may return null, indicating that no valid values can be obtained.
	LogList []*LogInfo `json:"LogList,omitnil,omitempty" name:"LogList"`

	// The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
	RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"`
}

type DescribeMongodbLogsResponse struct {
	*tchttp.BaseResponse
	Response *DescribeMongodbLogsResponseParams `json:"Response"`
}

func (r *DescribeMongodbLogsResponse) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *DescribeMongodbLogsResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeSecurityGroupRequestParams struct {
	// Instance ID. Log in to the [TencentDB for MongoDB console](https://console.cloud.tencent.com/mongodb), and copy the instance ID from the instance list.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`
}

type DescribeSecurityGroupRequest struct {
	*tchttp.BaseRequest
	
	// Instance ID. Log in to the [TencentDB for MongoDB console](https://console.cloud.tencent.com/mongodb), and copy the instance ID from the instance list.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`
}

func (r *DescribeSecurityGroupRequest) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *DescribeSecurityGroupRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "InstanceId")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeSecurityGroupRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeSecurityGroupResponseParams struct {
	// Information on security groups bound to the instance.
	Groups []*SecurityGroup `json:"Groups,omitnil,omitempty" name:"Groups"`

	// The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
	RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"`
}

type DescribeSecurityGroupResponse struct {
	*tchttp.BaseResponse
	Response *DescribeSecurityGroupResponseParams `json:"Response"`
}

func (r *DescribeSecurityGroupResponse) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *DescribeSecurityGroupResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeSlowLogPatternsRequestParams struct {
	// Instance ID. Log in to the [TencentDB for MongoDB console](https://console.cloud.tencent.com/mongodb), and copy the instance ID from the instance list.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Slow log start time.
	// - Format: yyyy-mm-dd hh:mm:ss. For example, 2019-06-01 10:00:00.
	// - The query start and end time interval cannot exceed 24 hours. Only slow logs within the last 7 days can be queried.
	StartTime *string `json:"StartTime,omitnil,omitempty" name:"StartTime"`

	// Slow log end time.
	// - Format: yyyy-mm-dd hh:mm:ss. For example, 2019-06-02 12:00:00.
	// - The query start and end time interval cannot exceed 24 hours. Only slow logs within the last 7 days can be queried.
	EndTime *string `json:"EndTime,omitnil,omitempty" name:"EndTime"`

	// Threshold of slow log execution time in milliseconds. Minimum value: 100. Slow logs whose execution time exceeds the threshold will be returned.
	SlowMS *uint64 `json:"SlowMS,omitnil,omitempty" name:"SlowMS"`

	// Offset. Minimum value: 0. Maximum value: 10000. Default value: 0.
	Offset *uint64 `json:"Offset,omitnil,omitempty" name:"Offset"`

	// Number of entries per page. Minimum value: 1. Maximum value: 100. Default value: 20.
	Limit *uint64 `json:"Limit,omitnil,omitempty" name:"Limit"`

	// Slow log format, which can be JSON. If this parameter is left empty, the slow log will be returned in its native format.
	Format *string `json:"Format,omitnil,omitempty" name:"Format"`
}

type DescribeSlowLogPatternsRequest struct {
	*tchttp.BaseRequest
	
	// Instance ID. Log in to the [TencentDB for MongoDB console](https://console.cloud.tencent.com/mongodb), and copy the instance ID from the instance list.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Slow log start time.
	// - Format: yyyy-mm-dd hh:mm:ss. For example, 2019-06-01 10:00:00.
	// - The query start and end time interval cannot exceed 24 hours. Only slow logs within the last 7 days can be queried.
	StartTime *string `json:"StartTime,omitnil,omitempty" name:"StartTime"`

	// Slow log end time.
	// - Format: yyyy-mm-dd hh:mm:ss. For example, 2019-06-02 12:00:00.
	// - The query start and end time interval cannot exceed 24 hours. Only slow logs within the last 7 days can be queried.
	EndTime *string `json:"EndTime,omitnil,omitempty" name:"EndTime"`

	// Threshold of slow log execution time in milliseconds. Minimum value: 100. Slow logs whose execution time exceeds the threshold will be returned.
	SlowMS *uint64 `json:"SlowMS,omitnil,omitempty" name:"SlowMS"`

	// Offset. Minimum value: 0. Maximum value: 10000. Default value: 0.
	Offset *uint64 `json:"Offset,omitnil,omitempty" name:"Offset"`

	// Number of entries per page. Minimum value: 1. Maximum value: 100. Default value: 20.
	Limit *uint64 `json:"Limit,omitnil,omitempty" name:"Limit"`

	// Slow log format, which can be JSON. If this parameter is left empty, the slow log will be returned in its native format.
	Format *string `json:"Format,omitnil,omitempty" name:"Format"`
}

func (r *DescribeSlowLogPatternsRequest) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *DescribeSlowLogPatternsRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "InstanceId")
	delete(f, "StartTime")
	delete(f, "EndTime")
	delete(f, "SlowMS")
	delete(f, "Offset")
	delete(f, "Limit")
	delete(f, "Format")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeSlowLogPatternsRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeSlowLogPatternsResponseParams struct {
	// Total number of slow logs
	Count *uint64 `json:"Count,omitnil,omitempty" name:"Count"`

	// Slow log statistics
	SlowLogPatterns []*SlowLogPattern `json:"SlowLogPatterns,omitnil,omitempty" name:"SlowLogPatterns"`

	// The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
	RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"`
}

type DescribeSlowLogPatternsResponse struct {
	*tchttp.BaseResponse
	Response *DescribeSlowLogPatternsResponseParams `json:"Response"`
}

func (r *DescribeSlowLogPatternsResponse) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *DescribeSlowLogPatternsResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeSlowLogsRequestParams struct {
	// Instance ID. Log in to the [TencentDB for MongoDB console](https://console.cloud.tencent.com/mongodb), and copy the instance ID from the instance list.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Slow log start time.
	// - Format: yyyy-mm-dd hh:mm:ss. For example, 2019-06-01 10:00:00.
	// - The query start and end time interval cannot exceed 24 hours. Only slow logs within the last 7 days can be queried.
	StartTime *string `json:"StartTime,omitnil,omitempty" name:"StartTime"`

	// Slow log end time.
	// - Format: yyyy-mm-dd hh:mm:ss. For example, 2019-06-02 12:00:00.- The query start and end time interval cannot exceed 24 hours. Only slow logs within the last 7 days can be queried.
	EndTime *string `json:"EndTime,omitnil,omitempty" name:"EndTime"`

	// Threshold of slow log execution time in milliseconds. Minimum value: 100. Slow logs whose execution time exceeds the threshold will be returned.
	SlowMS *uint64 `json:"SlowMS,omitnil,omitempty" name:"SlowMS"`

	// Offset. Minimum value: 0. Maximum value: 10000. Default value: 0.
	Offset *uint64 `json:"Offset,omitnil,omitempty" name:"Offset"`

	// Number of entries per page. Minimum value: 1. Maximum value: 100. Default value: 20.
	Limit *uint64 `json:"Limit,omitnil,omitempty" name:"Limit"`

	// Return format of slow log. The original slow log format is returned by default, and the format can be set to JSON on versions 4.4 and later.
	Format *string `json:"Format,omitnil,omitempty" name:"Format"`
}

type DescribeSlowLogsRequest struct {
	*tchttp.BaseRequest
	
	// Instance ID. Log in to the [TencentDB for MongoDB console](https://console.cloud.tencent.com/mongodb), and copy the instance ID from the instance list.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Slow log start time.
	// - Format: yyyy-mm-dd hh:mm:ss. For example, 2019-06-01 10:00:00.
	// - The query start and end time interval cannot exceed 24 hours. Only slow logs within the last 7 days can be queried.
	StartTime *string `json:"StartTime,omitnil,omitempty" name:"StartTime"`

	// Slow log end time.
	// - Format: yyyy-mm-dd hh:mm:ss. For example, 2019-06-02 12:00:00.- The query start and end time interval cannot exceed 24 hours. Only slow logs within the last 7 days can be queried.
	EndTime *string `json:"EndTime,omitnil,omitempty" name:"EndTime"`

	// Threshold of slow log execution time in milliseconds. Minimum value: 100. Slow logs whose execution time exceeds the threshold will be returned.
	SlowMS *uint64 `json:"SlowMS,omitnil,omitempty" name:"SlowMS"`

	// Offset. Minimum value: 0. Maximum value: 10000. Default value: 0.
	Offset *uint64 `json:"Offset,omitnil,omitempty" name:"Offset"`

	// Number of entries per page. Minimum value: 1. Maximum value: 100. Default value: 20.
	Limit *uint64 `json:"Limit,omitnil,omitempty" name:"Limit"`

	// Return format of slow log. The original slow log format is returned by default, and the format can be set to JSON on versions 4.4 and later.
	Format *string `json:"Format,omitnil,omitempty" name:"Format"`
}

func (r *DescribeSlowLogsRequest) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *DescribeSlowLogsRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "InstanceId")
	delete(f, "StartTime")
	delete(f, "EndTime")
	delete(f, "SlowMS")
	delete(f, "Offset")
	delete(f, "Limit")
	delete(f, "Format")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeSlowLogsRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeSlowLogsResponseParams struct {
	// Total number of slow logs.
	Count *uint64 `json:"Count,omitnil,omitempty" name:"Count"`

	// Slow log details.
	SlowLogs []*string `json:"SlowLogs,omitnil,omitempty" name:"SlowLogs"`

	// The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
	RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"`
}

type DescribeSlowLogsResponse struct {
	*tchttp.BaseResponse
	Response *DescribeSlowLogsResponseParams `json:"Response"`
}

func (r *DescribeSlowLogsResponse) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *DescribeSlowLogsResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeSpecInfoRequestParams struct {
	// AZ to be queried. For currently supported AZs, see [Regions and AZs](https://www.tencentcloud.comom/document/product/240/3637?from_cn_redirect=1).
	Zone *string `json:"Zone,omitnil,omitempty" name:"Zone"`
}

type DescribeSpecInfoRequest struct {
	*tchttp.BaseRequest
	
	// AZ to be queried. For currently supported AZs, see [Regions and AZs](https://www.tencentcloud.comom/document/product/240/3637?from_cn_redirect=1).
	Zone *string `json:"Zone,omitnil,omitempty" name:"Zone"`
}

func (r *DescribeSpecInfoRequest) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *DescribeSpecInfoRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "Zone")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeSpecInfoRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeSpecInfoResponseParams struct {
	// List of sales specification information on the instance.
	SpecInfoList []*SpecificationInfo `json:"SpecInfoList,omitnil,omitempty" name:"SpecInfoList"`

	// The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
	RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"`
}

type DescribeSpecInfoResponse struct {
	*tchttp.BaseResponse
	Response *DescribeSpecInfoResponseParams `json:"Response"`
}

func (r *DescribeSpecInfoResponse) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *DescribeSpecInfoResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type FlushInstanceRouterConfigRequestParams struct {
	// Instance ID
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`
}

type FlushInstanceRouterConfigRequest struct {
	*tchttp.BaseRequest
	
	// Instance ID
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`
}

func (r *FlushInstanceRouterConfigRequest) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *FlushInstanceRouterConfigRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "InstanceId")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "FlushInstanceRouterConfigRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type FlushInstanceRouterConfigResponseParams struct {
	// The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
	RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"`
}

type FlushInstanceRouterConfigResponse struct {
	*tchttp.BaseResponse
	Response *FlushInstanceRouterConfigResponseParams `json:"Response"`
}

func (r *FlushInstanceRouterConfigResponse) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *FlushInstanceRouterConfigResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type InquirePriceCreateDBInstancesRequestParams struct {
	// Region and AZ information of the instance. For details, see [Regions and AZs](https://www.tencentcloud.comom/document/product/240/3637?from_cn_redirect=1).
	Zone *string `json:"Zone,omitnil,omitempty" name:"Zone"`

	// -Specifies the number of primary and secondary nodes for each replica set during replica set instance creation. call the [DescribeSpecInfo](https://www.tencentcloud.comom/document/product/240/38567?from_cn_redirect=1) API to obtain the maximum and minimum number of nodes supported for each replica set.
	// - Specifies the number of primary and secondary nodes for each shard during sharded cluster instance creation. Call the [DescribeSpecInfo](https://www.tencentcloud.comom/document/product/240/38567?from_cn_redirect=1) API to obtain the maximum and minimum number of nodes supported for each shard.
	NodeNum *int64 `json:"NodeNum,omitnil,omitempty" name:"NodeNum"`

	// Instance memory size.
	// 
	//  - Unit: GB.
	//  - For the value range, call the [DescribeSpecInfo](https://intl.cloud.tencent.com/document/product/240/38567?from_cn_redirect=1) API. The CPU and Memory parameters in the returned data structure SpecItems correspond to the number of CPU cores and the memory specification, respectively.
	Memory *int64 `json:"Memory,omitnil,omitempty" name:"Memory"`

	// Instance disk size.
	//  - Unit: GB.
	//  - For the value range, call the [DescribeSpecInfo](https://intl.cloud.tencent.com/document/product/240/38567?from_cn_redirect=1) API. The MinStorage and MaxStorage parameters in the returned data structure SpecItems correspond to the minimum and maximum disk specifications, respectively.
	Volume *int64 `json:"Volume,omitnil,omitempty" name:"Volume"`

	// Instance version information. The [DescribeSpecInfo](https://www.tencentcloud.comom/document/product/240/38567?from_cn_redirect=1) API can be called to obtain specific supported versions. The MongoVersionCode parameter in the returned data structure SpecItems indicates the information on versions supported by instances. The corresponding relationship between version information and version number is as follows:
	// - MONGO_40_WT: version of the MongoDB 4.0 WiredTiger storage engine.
	// - MONGO_42_WT: version of the MongoDB 4.2 WiredTiger storage engine.
	// - MONGO_44_WT: version of the MongoDB 4.4 WiredTiger storage engine.
	// - MONGO_50_WT: version of the MongoDB 5.0 WiredTiger storage engine.
	// - MONGO_60_WT: version of the MongoDB 6.0 WiredTiger storage engine.
	// - MONGO_70_WT: version of the MongoDB 7.0 WiredTiger storage engine.
	MongoVersion *string `json:"MongoVersion,omitnil,omitempty" name:"MongoVersion"`

	// Product specification type.
	//  - HIO10G: general high-I/O 10GE type.
	//  - HCD: cloud disk.
	MachineCode *string `json:"MachineCode,omitnil,omitempty" name:"MachineCode"`

	// Number of instances. Minimum value: 1. Maximum value: 10.
	GoodsNum *int64 `json:"GoodsNum,omitnil,omitempty" name:"GoodsNum"`

	// Instance type.
	// 
	//  - REPLSET: replica set.
	//  - SHARD: sharded cluster.
	ClusterType *string `json:"ClusterType,omitnil,omitempty" name:"ClusterType"`

	//  - Specifies the number of replica sets during replica set instance creation. This parameter can only be set to 1.
	//  - Specifies the number of shards during sharded cluster instance creation. Call the [DescribeSpecInfo](https://intl.cloud.tencent.com/document/product/240/38567?from_cn_redirect=1) API to query the range of shard quantity. The parameters MinReplicateSetNum and MaxReplicateSetNum in the returned data structure SpecItems correspond to the minimum value and maximum value, respectively.
	ReplicateSetNum *int64 `json:"ReplicateSetNum,omitnil,omitempty" name:"ReplicateSetNum"`

	//  - When the monthly subscription mode is selected, that is, when <b>InstanceChargeType</b> is set to <b>PREPAID</b>, this parameter is required for specifying the purchase duration of instances. Valid values: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 24, and 36. Unit: months.
	//  - When pay-as-you-go is selected, that is, when <b>InstanceChargeType</b> is set to **POSTPAID_BY_HOUR**, this parameter only can be set to 1.
	Period *int64 `json:"Period,omitnil,omitempty" name:"Period"`

	// Instance payment method.
	//  - PREPAID: monthly subscription.
	//  - POSTPAID_BY_HOUR: pay-as-you-go.
	InstanceChargeType *string `json:"InstanceChargeType,omitnil,omitempty" name:"InstanceChargeType"`

	// Number of Mongos node CPU cores. Valid values: 1, 2, 4, 8, and 16. This parameter is required during sharded cluster instance purchase. If this parameter is left blank, the default value 2 is used.
	MongosCpu *uint64 `json:"MongosCpu,omitnil,omitempty" name:"MongosCpu"`

	// Mongos node memory size. - This parameter is required during sharded cluster instance purchase. - Unit: GB. Valid values: 2 (for 1 core), 4 (for 2 cores), 8 (for 4 cores), 16 (for 8 cores), and 32 (for 16 cores). If this parameter is left blank, the default value 4 is used.
	MongosMemory *uint64 `json:"MongosMemory,omitnil,omitempty" name:"MongosMemory"`

	// Specifies the number of Mongos nodes. Value range: [3,32]. For querying the price of sharded cluster instances, this parameter is required. If it is left blank, the default value 3 is used.
	MongosNum *uint64 `json:"MongosNum,omitnil,omitempty" name:"MongosNum"`

	// Specifies the number of ConfigServer CPU cores. The value is fixed as 1.
	ConfigServerCpu *uint64 `json:"ConfigServerCpu,omitnil,omitempty" name:"ConfigServerCpu"`

	// Specifies the ConfigServer memory size. The value is fixed as 2. Unit: GB. This parameter can be left blank.
	ConfigServerMemory *uint64 `json:"ConfigServerMemory,omitnil,omitempty" name:"ConfigServerMemory"`

	// Specifies the ConfigServer disk size. The value is fixed as 20. Unit: GB. This parameter can be left blank.
	ConfigServerVolume *uint64 `json:"ConfigServerVolume,omitnil,omitempty" name:"ConfigServerVolume"`
}

type InquirePriceCreateDBInstancesRequest struct {
	*tchttp.BaseRequest
	
	// Region and AZ information of the instance. For details, see [Regions and AZs](https://www.tencentcloud.comom/document/product/240/3637?from_cn_redirect=1).
	Zone *string `json:"Zone,omitnil,omitempty" name:"Zone"`

	// -Specifies the number of primary and secondary nodes for each replica set during replica set instance creation. call the [DescribeSpecInfo](https://www.tencentcloud.comom/document/product/240/38567?from_cn_redirect=1) API to obtain the maximum and minimum number of nodes supported for each replica set.
	// - Specifies the number of primary and secondary nodes for each shard during sharded cluster instance creation. Call the [DescribeSpecInfo](https://www.tencentcloud.comom/document/product/240/38567?from_cn_redirect=1) API to obtain the maximum and minimum number of nodes supported for each shard.
	NodeNum *int64 `json:"NodeNum,omitnil,omitempty" name:"NodeNum"`

	// Instance memory size.
	// 
	//  - Unit: GB.
	//  - For the value range, call the [DescribeSpecInfo](https://intl.cloud.tencent.com/document/product/240/38567?from_cn_redirect=1) API. The CPU and Memory parameters in the returned data structure SpecItems correspond to the number of CPU cores and the memory specification, respectively.
	Memory *int64 `json:"Memory,omitnil,omitempty" name:"Memory"`

	// Instance disk size.
	//  - Unit: GB.
	//  - For the value range, call the [DescribeSpecInfo](https://intl.cloud.tencent.com/document/product/240/38567?from_cn_redirect=1) API. The MinStorage and MaxStorage parameters in the returned data structure SpecItems correspond to the minimum and maximum disk specifications, respectively.
	Volume *int64 `json:"Volume,omitnil,omitempty" name:"Volume"`

	// Instance version information. The [DescribeSpecInfo](https://www.tencentcloud.comom/document/product/240/38567?from_cn_redirect=1) API can be called to obtain specific supported versions. The MongoVersionCode parameter in the returned data structure SpecItems indicates the information on versions supported by instances. The corresponding relationship between version information and version number is as follows:
	// - MONGO_40_WT: version of the MongoDB 4.0 WiredTiger storage engine.
	// - MONGO_42_WT: version of the MongoDB 4.2 WiredTiger storage engine.
	// - MONGO_44_WT: version of the MongoDB 4.4 WiredTiger storage engine.
	// - MONGO_50_WT: version of the MongoDB 5.0 WiredTiger storage engine.
	// - MONGO_60_WT: version of the MongoDB 6.0 WiredTiger storage engine.
	// - MONGO_70_WT: version of the MongoDB 7.0 WiredTiger storage engine.
	MongoVersion *string `json:"MongoVersion,omitnil,omitempty" name:"MongoVersion"`

	// Product specification type.
	//  - HIO10G: general high-I/O 10GE type.
	//  - HCD: cloud disk.
	MachineCode *string `json:"MachineCode,omitnil,omitempty" name:"MachineCode"`

	// Number of instances. Minimum value: 1. Maximum value: 10.
	GoodsNum *int64 `json:"GoodsNum,omitnil,omitempty" name:"GoodsNum"`

	// Instance type.
	// 
	//  - REPLSET: replica set.
	//  - SHARD: sharded cluster.
	ClusterType *string `json:"ClusterType,omitnil,omitempty" name:"ClusterType"`

	//  - Specifies the number of replica sets during replica set instance creation. This parameter can only be set to 1.
	//  - Specifies the number of shards during sharded cluster instance creation. Call the [DescribeSpecInfo](https://intl.cloud.tencent.com/document/product/240/38567?from_cn_redirect=1) API to query the range of shard quantity. The parameters MinReplicateSetNum and MaxReplicateSetNum in the returned data structure SpecItems correspond to the minimum value and maximum value, respectively.
	ReplicateSetNum *int64 `json:"ReplicateSetNum,omitnil,omitempty" name:"ReplicateSetNum"`

	//  - When the monthly subscription mode is selected, that is, when <b>InstanceChargeType</b> is set to <b>PREPAID</b>, this parameter is required for specifying the purchase duration of instances. Valid values: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 24, and 36. Unit: months.
	//  - When pay-as-you-go is selected, that is, when <b>InstanceChargeType</b> is set to **POSTPAID_BY_HOUR**, this parameter only can be set to 1.
	Period *int64 `json:"Period,omitnil,omitempty" name:"Period"`

	// Instance payment method.
	//  - PREPAID: monthly subscription.
	//  - POSTPAID_BY_HOUR: pay-as-you-go.
	InstanceChargeType *string `json:"InstanceChargeType,omitnil,omitempty" name:"InstanceChargeType"`

	// Number of Mongos node CPU cores. Valid values: 1, 2, 4, 8, and 16. This parameter is required during sharded cluster instance purchase. If this parameter is left blank, the default value 2 is used.
	MongosCpu *uint64 `json:"MongosCpu,omitnil,omitempty" name:"MongosCpu"`

	// Mongos node memory size. - This parameter is required during sharded cluster instance purchase. - Unit: GB. Valid values: 2 (for 1 core), 4 (for 2 cores), 8 (for 4 cores), 16 (for 8 cores), and 32 (for 16 cores). If this parameter is left blank, the default value 4 is used.
	MongosMemory *uint64 `json:"MongosMemory,omitnil,omitempty" name:"MongosMemory"`

	// Specifies the number of Mongos nodes. Value range: [3,32]. For querying the price of sharded cluster instances, this parameter is required. If it is left blank, the default value 3 is used.
	MongosNum *uint64 `json:"MongosNum,omitnil,omitempty" name:"MongosNum"`

	// Specifies the number of ConfigServer CPU cores. The value is fixed as 1.
	ConfigServerCpu *uint64 `json:"ConfigServerCpu,omitnil,omitempty" name:"ConfigServerCpu"`

	// Specifies the ConfigServer memory size. The value is fixed as 2. Unit: GB. This parameter can be left blank.
	ConfigServerMemory *uint64 `json:"ConfigServerMemory,omitnil,omitempty" name:"ConfigServerMemory"`

	// Specifies the ConfigServer disk size. The value is fixed as 20. Unit: GB. This parameter can be left blank.
	ConfigServerVolume *uint64 `json:"ConfigServerVolume,omitnil,omitempty" name:"ConfigServerVolume"`
}

func (r *InquirePriceCreateDBInstancesRequest) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *InquirePriceCreateDBInstancesRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "Zone")
	delete(f, "NodeNum")
	delete(f, "Memory")
	delete(f, "Volume")
	delete(f, "MongoVersion")
	delete(f, "MachineCode")
	delete(f, "GoodsNum")
	delete(f, "ClusterType")
	delete(f, "ReplicateSetNum")
	delete(f, "Period")
	delete(f, "InstanceChargeType")
	delete(f, "MongosCpu")
	delete(f, "MongosMemory")
	delete(f, "MongosNum")
	delete(f, "ConfigServerCpu")
	delete(f, "ConfigServerMemory")
	delete(f, "ConfigServerVolume")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "InquirePriceCreateDBInstancesRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type InquirePriceCreateDBInstancesResponseParams struct {
	// Price.
	Price *DBInstancePrice `json:"Price,omitnil,omitempty" name:"Price"`

	// The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
	RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"`
}

type InquirePriceCreateDBInstancesResponse struct {
	*tchttp.BaseResponse
	Response *InquirePriceCreateDBInstancesResponseParams `json:"Response"`
}

func (r *InquirePriceCreateDBInstancesResponse) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *InquirePriceCreateDBInstancesResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type InquirePriceModifyDBInstanceSpecRequestParams struct {
	// Instance ID. For example, cmgo-p8vn****. Log in to the [TencentDB for MongoDB console](https://console.cloud.tencent.com/mongodb), and copy the instance ID from the instance list.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Instance memory size after configuration changes, in GB. The [DescribeSpecInfo](https://www.tencentcloud.comom/document/product/240/38567?from_cn_redirect=1) API can be called to obtain the specific sales specifications for memory.
	Memory *int64 `json:"Memory,omitnil,omitempty" name:"Memory"`

	// Instance disk size after configuration changes, in GB. The [DescribeSpecInfo](https://www.tencentcloud.comom/document/product/240/38567?from_cn_redirect=1) API can be called to obtain the maximum and minimum disk sizes corresponding to each CPU specification.
	Volume *int64 `json:"Volume,omitnil,omitempty" name:"Volume"`

	// Number of instance nodes. The [DescribeSpecInfo](https://www.tencentcloud.comom/document/product/240/38567?from_cn_redirect=1) API can be called to obtain the number of instance nodes.
	// - Replica set instance, which refers to the number of primary and secondary nodes for the instance after configuration changes.
	// - Sharded cluster instance, which refers to the number of primary and secondary nodes per shard for the instance after configuration changes.
	// **Note**: Do not initiate tasks of adjusting the number of nodes and shards and the node specifications simultaneously.
	NodeNum *int64 `json:"NodeNum,omitnil,omitempty" name:"NodeNum"`

	// Sharded cluster instance, which refers to the number of shards for the instance after configuration changes. Value range: [2, 36].
	// **Note**: The number of shards after changes cannot be less than the current number. Do not initiate tasks of adjusting the number of nodes and shards and the node specifications simultaneously.
	ReplicateSetNum *int64 `json:"ReplicateSetNum,omitnil,omitempty" name:"ReplicateSetNum"`
}

type InquirePriceModifyDBInstanceSpecRequest struct {
	*tchttp.BaseRequest
	
	// Instance ID. For example, cmgo-p8vn****. Log in to the [TencentDB for MongoDB console](https://console.cloud.tencent.com/mongodb), and copy the instance ID from the instance list.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Instance memory size after configuration changes, in GB. The [DescribeSpecInfo](https://www.tencentcloud.comom/document/product/240/38567?from_cn_redirect=1) API can be called to obtain the specific sales specifications for memory.
	Memory *int64 `json:"Memory,omitnil,omitempty" name:"Memory"`

	// Instance disk size after configuration changes, in GB. The [DescribeSpecInfo](https://www.tencentcloud.comom/document/product/240/38567?from_cn_redirect=1) API can be called to obtain the maximum and minimum disk sizes corresponding to each CPU specification.
	Volume *int64 `json:"Volume,omitnil,omitempty" name:"Volume"`

	// Number of instance nodes. The [DescribeSpecInfo](https://www.tencentcloud.comom/document/product/240/38567?from_cn_redirect=1) API can be called to obtain the number of instance nodes.
	// - Replica set instance, which refers to the number of primary and secondary nodes for the instance after configuration changes.
	// - Sharded cluster instance, which refers to the number of primary and secondary nodes per shard for the instance after configuration changes.
	// **Note**: Do not initiate tasks of adjusting the number of nodes and shards and the node specifications simultaneously.
	NodeNum *int64 `json:"NodeNum,omitnil,omitempty" name:"NodeNum"`

	// Sharded cluster instance, which refers to the number of shards for the instance after configuration changes. Value range: [2, 36].
	// **Note**: The number of shards after changes cannot be less than the current number. Do not initiate tasks of adjusting the number of nodes and shards and the node specifications simultaneously.
	ReplicateSetNum *int64 `json:"ReplicateSetNum,omitnil,omitempty" name:"ReplicateSetNum"`
}

func (r *InquirePriceModifyDBInstanceSpecRequest) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *InquirePriceModifyDBInstanceSpecRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "InstanceId")
	delete(f, "Memory")
	delete(f, "Volume")
	delete(f, "NodeNum")
	delete(f, "ReplicateSetNum")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "InquirePriceModifyDBInstanceSpecRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type InquirePriceModifyDBInstanceSpecResponseParams struct {
	// Price.
	Price *DBInstancePrice `json:"Price,omitnil,omitempty" name:"Price"`

	// The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
	RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"`
}

type InquirePriceModifyDBInstanceSpecResponse struct {
	*tchttp.BaseResponse
	Response *InquirePriceModifyDBInstanceSpecResponseParams `json:"Response"`
}

func (r *InquirePriceModifyDBInstanceSpecResponse) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *InquirePriceModifyDBInstanceSpecResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type InquirePriceRenewDBInstancesRequestParams struct {
	// Instance ID. Log in to the [TencentDB for MongoDB console](https://console.cloud.tencent.com/MongoDB) and copy the instance ID from the instance list. Up to 5 instances can be queried at a time.
	InstanceIds []*string `json:"InstanceIds,omitnil,omitempty" name:"InstanceIds"`

	// The parameter setting for the prepaid mode (monthly subscription mode). This parameter can specify the renewal period, whether to set automatic renewal, and other attributes of the monthly subscription instance.
	InstanceChargePrepaid *InstanceChargePrepaid `json:"InstanceChargePrepaid,omitnil,omitempty" name:"InstanceChargePrepaid"`
}

type InquirePriceRenewDBInstancesRequest struct {
	*tchttp.BaseRequest
	
	// Instance ID. Log in to the [TencentDB for MongoDB console](https://console.cloud.tencent.com/MongoDB) and copy the instance ID from the instance list. Up to 5 instances can be queried at a time.
	InstanceIds []*string `json:"InstanceIds,omitnil,omitempty" name:"InstanceIds"`

	// The parameter setting for the prepaid mode (monthly subscription mode). This parameter can specify the renewal period, whether to set automatic renewal, and other attributes of the monthly subscription instance.
	InstanceChargePrepaid *InstanceChargePrepaid `json:"InstanceChargePrepaid,omitnil,omitempty" name:"InstanceChargePrepaid"`
}

func (r *InquirePriceRenewDBInstancesRequest) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *InquirePriceRenewDBInstancesRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "InstanceIds")
	delete(f, "InstanceChargePrepaid")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "InquirePriceRenewDBInstancesRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type InquirePriceRenewDBInstancesResponseParams struct {
	// Price.
	Price *DBInstancePrice `json:"Price,omitnil,omitempty" name:"Price"`

	// The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
	RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"`
}

type InquirePriceRenewDBInstancesResponse struct {
	*tchttp.BaseResponse
	Response *InquirePriceRenewDBInstancesResponseParams `json:"Response"`
}

func (r *InquirePriceRenewDBInstancesResponse) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *InquirePriceRenewDBInstancesResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

type InstanceChargePrepaid struct {
	// Instance purchase duration. Unit: months. Valid values: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 24, and 36. Default value: 1.
	Period *int64 `json:"Period,omitnil,omitempty" name:"Period"`

	// Automatic renewal flag. Valid values:
	//  - NOTIFY_AND_AUTO_RENEW: A notification is sent upon expiration, and the instance is renewed automatically. If the account balance is sufficient, the instance will be renewed automatically on a monthly basis after expiration.
	//  - NOTIFY_AND_MANUAL_RENEW: A notification is sent upon expiration, but the instance is not renewed automatically. Default value: NOTIFY_AND_MANUAL_RENEW.
	//  - DISABLE_NOTIFY_AND_MANUAL_RENEW: No notification is sent upon expiration, and the instance is not renewed automatically.
	RenewFlag *string `json:"RenewFlag,omitnil,omitempty" name:"RenewFlag"`
}

type InstanceDetail struct {
	// Instance ID.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Instance name
	InstanceName *string `json:"InstanceName,omitnil,omitempty" name:"InstanceName"`

	// Billing type. Valid value: 0 (pay-as-you-go)
	PayMode *uint64 `json:"PayMode,omitnil,omitempty" name:"PayMode"`

	// Project ID.
	ProjectId *uint64 `json:"ProjectId,omitnil,omitempty" name:"ProjectId"`

	// Cluster type.
	// - 0: replica set instance.
	// - 1: sharded cluster instance.
	ClusterType *uint64 `json:"ClusterType,omitnil,omitempty" name:"ClusterType"`

	// Region information
	Region *string `json:"Region,omitnil,omitempty" name:"Region"`

	// AZ information
	Zone *string `json:"Zone,omitnil,omitempty" name:"Zone"`

	// Network type.
	// - 0: basic network.
	// - 1: VPC.
	NetType *uint64 `json:"NetType,omitnil,omitempty" name:"NetType"`

	// VPC ID
	VpcId *string `json:"VpcId,omitnil,omitempty" name:"VpcId"`

	// Subnet ID of VPC
	SubnetId *string `json:"SubnetId,omitnil,omitempty" name:"SubnetId"`

	// Instance status.
	// - 0: to be initialized.
	// - 1: processing, such as specification changes and parameter modifications.
	// - 2: running normally.
	// - -2: isolated (yearly/monthly subscription).
	// - -3: isolated (pay-as-you-go).
	Status *int64 `json:"Status,omitnil,omitempty" name:"Status"`

	// Instance IP
	Vip *string `json:"Vip,omitnil,omitempty" name:"Vip"`

	// Port number
	Vport *uint64 `json:"Vport,omitnil,omitempty" name:"Vport"`

	// Instance creation time
	CreateTime *string `json:"CreateTime,omitnil,omitempty" name:"CreateTime"`

	// Instance expiration time
	DeadLine *string `json:"DeadLine,omitnil,omitempty" name:"DeadLine"`

	// Storage engine version information on instances.
	// - MONGO_36_WT: version of the MongoDB 3.6 WiredTiger storage engine.
	// - MONGO_40_WT: version of the MongoDB 4.0 WiredTiger storage engine.
	// - MONGO_42_WT: version of the MongoDB 4.2 WiredTiger storage engine.
	// - MONGO_44_WT: version of the MongoDB 4.4 WiredTiger storage engine.
	// - MONGO_50_WT: version of the MongoDB 5.0 WiredTiger storage engine.
	// - MONGO_60_WT: version of the MongoDB 6.0 WiredTiger storage engine.
	// - MONGO_70_WT: version of the MongoDB 7.0 WiredTiger storage engine.
	MongoVersion *string `json:"MongoVersion,omitnil,omitempty" name:"MongoVersion"`

	// Instance memory specification, in MB.
	Memory *uint64 `json:"Memory,omitnil,omitempty" name:"Memory"`

	// Instance disk specification, in MB.
	Volume *uint64 `json:"Volume,omitnil,omitempty" name:"Volume"`

	// Number of the instance CPU cores.
	CpuNum *uint64 `json:"CpuNum,omitnil,omitempty" name:"CpuNum"`

	// Instance machine type.
	// - HIO10G: general HIO 10GE type.
	// - HCD: Cloud Disk Edition type.
	MachineType *string `json:"MachineType,omitnil,omitempty" name:"MachineType"`

	// Number of secondary nodes of an instance
	SecondaryNum *uint64 `json:"SecondaryNum,omitnil,omitempty" name:"SecondaryNum"`

	// Number of instance shards
	ReplicationSetNum *uint64 `json:"ReplicationSetNum,omitnil,omitempty" name:"ReplicationSetNum"`

	// Automatic renewal flag for the instance.
	// - 0: manual renewal.
	// - 1: automatic renewal.
	// - 2: no renewal after confirmation.
	AutoRenewFlag *int64 `json:"AutoRenewFlag,omitnil,omitempty" name:"AutoRenewFlag"`

	// Used capacity, in MB.
	UsedVolume *uint64 `json:"UsedVolume,omitnil,omitempty" name:"UsedVolume"`

	// Start time of the maintenance time
	MaintenanceStart *string `json:"MaintenanceStart,omitnil,omitempty" name:"MaintenanceStart"`

	// End time of the maintenance time
	MaintenanceEnd *string `json:"MaintenanceEnd,omitnil,omitempty" name:"MaintenanceEnd"`

	// Shard information
	ReplicaSets []*ShardInfo `json:"ReplicaSets,omitnil,omitempty" name:"ReplicaSets"`

	// Information of read-only instances
	ReadonlyInstances []*DBInstanceInfo `json:"ReadonlyInstances,omitnil,omitempty" name:"ReadonlyInstances"`

	// Information of disaster recovery instances
	StandbyInstances []*DBInstanceInfo `json:"StandbyInstances,omitnil,omitempty" name:"StandbyInstances"`

	// Information of temp instances
	CloneInstances []*DBInstanceInfo `json:"CloneInstances,omitnil,omitempty" name:"CloneInstances"`

	// Information of associated instances. For a regular instance, this field represents the information of its temp instance; for a temp instance, this field represents the information of its regular instance; and for a read-only instance or a disaster recovery instance, this field represents the information of its primary instance.
	RelatedInstance *DBInstanceInfo `json:"RelatedInstance,omitnil,omitempty" name:"RelatedInstance"`

	// Instance tag information set
	Tags []*TagInfo `json:"Tags,omitnil,omitempty" name:"Tags"`

	// Instance version
	InstanceVer *uint64 `json:"InstanceVer,omitnil,omitempty" name:"InstanceVer"`

	// Instance version
	ClusterVer *uint64 `json:"ClusterVer,omitnil,omitempty" name:"ClusterVer"`

	// Protocol information: mongodb.
	Protocol *uint64 `json:"Protocol,omitnil,omitempty" name:"Protocol"`

	// Instance type.
	// - 0: all instances.
	// - 1: formal instance.
	// - 2: temporary instance.
	// - 3: read-only instance.
	// - -1: include the formal, read-only, and disaster recovery instance simultaneously.
	InstanceType *uint64 `json:"InstanceType,omitnil,omitempty" name:"InstanceType"`

	// Instance status description.
	InstanceStatusDesc *string `json:"InstanceStatusDesc,omitnil,omitempty" name:"InstanceStatusDesc"`

	// Physical instance ID corresponding to the instance. The instances that have been rolled back and replaced have different InstanceIds and RealInstanceIds, which need to be obtained through the physical ID in scenarios such as obtaining monitoring data from Barad.
	RealInstanceId *string `json:"RealInstanceId,omitnil,omitempty" name:"RealInstanceId"`

	// Number of Mongos nodes.
	MongosNodeNum *uint64 `json:"MongosNodeNum,omitnil,omitempty" name:"MongosNodeNum"`

	// Mongos node memory, in MB.
	MongosMemory *uint64 `json:"MongosMemory,omitnil,omitempty" name:"MongosMemory"`

	// Number of Mongos node CPU cores.
	MongosCpuNum *uint64 `json:"MongosCpuNum,omitnil,omitempty" name:"MongosCpuNum"`

	// Number of ConfigServer nodes.
	ConfigServerNodeNum *uint64 `json:"ConfigServerNodeNum,omitnil,omitempty" name:"ConfigServerNodeNum"`

	// Config Server node memory, in MB.
	ConfigServerMemory *uint64 `json:"ConfigServerMemory,omitnil,omitempty" name:"ConfigServerMemory"`

	// Config Server node disk size, in MB.
	ConfigServerVolume *uint64 `json:"ConfigServerVolume,omitnil,omitempty" name:"ConfigServerVolume"`

	// Number of ConfigServer node CPU cores.
	ConfigServerCpuNum *uint64 `json:"ConfigServerCpuNum,omitnil,omitempty" name:"ConfigServerCpuNum"`

	// Number of read-only nodes.
	ReadonlyNodeNum *uint64 `json:"ReadonlyNodeNum,omitnil,omitempty" name:"ReadonlyNodeNum"`
}

// Predefined struct for user
type InstanceEnableSSLRequestParams struct {
	// Instance ID.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Configures whether to enable SSL for access.
	// - true: enabled.
	// - false: disabled.
	Enable *bool `json:"Enable,omitnil,omitempty" name:"Enable"`
}

type InstanceEnableSSLRequest struct {
	*tchttp.BaseRequest
	
	// Instance ID.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Configures whether to enable SSL for access.
	// - true: enabled.
	// - false: disabled.
	Enable *bool `json:"Enable,omitnil,omitempty" name:"Enable"`
}

func (r *InstanceEnableSSLRequest) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *InstanceEnableSSLRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "InstanceId")
	delete(f, "Enable")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "InstanceEnableSSLRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type InstanceEnableSSLResponseParams struct {
	// SSL enabling status.
	// - 0: disabled.
	// - 1: enabled.
	// Note: This field may return null, indicating that no valid values can be obtained.
	Status *int64 `json:"Status,omitnil,omitempty" name:"Status"`

	// Certificate file expiration time, in the format of 2023-05-01 12:00:00.
	// Note: This field may return null, indicating that no valid values can be obtained.
	ExpiredTime *string `json:"ExpiredTime,omitnil,omitempty" name:"ExpiredTime"`

	// Download URL of the certificate file.
	// Note: This field may return null, indicating that no valid values can be obtained.
	CertUrl *string `json:"CertUrl,omitnil,omitempty" name:"CertUrl"`

	// Process ID.
	FlowId *int64 `json:"FlowId,omitnil,omitempty" name:"FlowId"`

	// The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
	RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"`
}

type InstanceEnableSSLResponse struct {
	*tchttp.BaseResponse
	Response *InstanceEnableSSLResponseParams `json:"Response"`
}

func (r *InstanceEnableSSLResponse) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *InstanceEnableSSLResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

type InstanceEnumParam struct {
	// Current parameter value.
	CurrentValue *string `json:"CurrentValue,omitnil,omitempty" name:"CurrentValue"`

	// Default parameter value.
	DefaultValue *string `json:"DefaultValue,omitnil,omitempty" name:"DefaultValue"`

	// Enumerated values, which indicate all supported values.
	EnumValue []*string `json:"EnumValue,omitnil,omitempty" name:"EnumValue"`

	// Whether a restart is required for the parameters to take effect after modification.
	//  - 1: Restart is required for the parameters to take effect.
	//  - 0: Restart is not required. Once set, the parameters take effect immediately.
	NeedRestart *string `json:"NeedRestart,omitnil,omitempty" name:"NeedRestart"`

	// Parameter name.
	ParamName *string `json:"ParamName,omitnil,omitempty" name:"ParamName"`

	// Parameter description.
	Tips []*string `json:"Tips,omitnil,omitempty" name:"Tips"`

	// Parameter type description.
	ValueType *string `json:"ValueType,omitnil,omitempty" name:"ValueType"`

	// Whether the parameter values are used during running.
	//  - 1. parameter values used during running.
	//  - 0: parameter values not used during running.
	Status *uint64 `json:"Status,omitnil,omitempty" name:"Status"`
}

type InstanceIntegerParam struct {
	// Current parameter value.
	CurrentValue *string `json:"CurrentValue,omitnil,omitempty" name:"CurrentValue"`

	// Default parameter value.
	DefaultValue *string `json:"DefaultValue,omitnil,omitempty" name:"DefaultValue"`

	// Maximum parameter value.
	Max *string `json:"Max,omitnil,omitempty" name:"Max"`

	// Minimum value.
	Min *string `json:"Min,omitnil,omitempty" name:"Min"`

	// Whether a restart is required for the parameters to take effect after modification.
	//  - 1: Restart is required for the parameters to take effect.
	//  - 0: Restart is not required. Once set, the parameters take effect immediately.
	NeedRestart *string `json:"NeedRestart,omitnil,omitempty" name:"NeedRestart"`

	// Parameter name.
	ParamName *string `json:"ParamName,omitnil,omitempty" name:"ParamName"`

	// Parameter description.
	Tips []*string `json:"Tips,omitnil,omitempty" name:"Tips"`

	// Parameter type.
	ValueType *string `json:"ValueType,omitnil,omitempty" name:"ValueType"`

	// Whether the parameter values are used during running.
	//  - 1. parameter values used during running.
	//  - 0: parameter values not used during running.
	Status *uint64 `json:"Status,omitnil,omitempty" name:"Status"`

	// Redundant field. It can be ignored.
	Unit *string `json:"Unit,omitnil,omitempty" name:"Unit"`
}

type InstanceMultiParam struct {
	// Current parameter value.
	CurrentValue *string `json:"CurrentValue,omitnil,omitempty" name:"CurrentValue"`

	// Default parameter value.
	DefaultValue *string `json:"DefaultValue,omitnil,omitempty" name:"DefaultValue"`

	// Reference value range.
	EnumValue []*string `json:"EnumValue,omitnil,omitempty" name:"EnumValue"`

	// Whether a restart is required for the parameters to take effect after modification.
	//  - 1: Restart is required for the parameters to take effect.
	//  - 0: Restart is not required. Once set, the parameters take effect immediately.
	NeedRestart *string `json:"NeedRestart,omitnil,omitempty" name:"NeedRestart"`

	// Parameter name.
	ParamName *string `json:"ParamName,omitnil,omitempty" name:"ParamName"`

	// Whether the parameter values are used during running.
	//  - 1. parameter values used during running.
	//  - 0: parameter values not used during running.
	Status *uint64 `json:"Status,omitnil,omitempty" name:"Status"`

	// Parameter description.
	Tips []*string `json:"Tips,omitnil,omitempty" name:"Tips"`

	// Describes the type of the current values. Default value: multi.
	ValueType *string `json:"ValueType,omitnil,omitempty" name:"ValueType"`
}

type InstanceTextParam struct {
	// Current parameter value.
	CurrentValue *string `json:"CurrentValue,omitnil,omitempty" name:"CurrentValue"`

	// Default parameter value.
	DefaultValue *string `json:"DefaultValue,omitnil,omitempty" name:"DefaultValue"`

	// Whether a restart is required after the parameter values are modified.
	NeedRestart *string `json:"NeedRestart,omitnil,omitempty" name:"NeedRestart"`

	// Parameter name.
	ParamName *string `json:"ParamName,omitnil,omitempty" name:"ParamName"`

	// Corresponding values of the Text-type parameters.
	TextValue *string `json:"TextValue,omitnil,omitempty" name:"TextValue"`

	// Parameter description.
	Tips []*string `json:"Tips,omitnil,omitempty" name:"Tips"`

	// Parameter type description.
	ValueType *string `json:"ValueType,omitnil,omitempty" name:"ValueType"`

	// Whether the parameter values are used during running.
	//  - 1. parameter values used during running.
	//  - 0: parameter values not used during running.
	Status *string `json:"Status,omitnil,omitempty" name:"Status"`
}

// Predefined struct for user
type IsolateDBInstanceRequestParams struct {
	// Instance ID. Log in to the [TencentDB for MongoDB console](https://console.cloud.tencent.com/mongodb), and copy the ID of the instance to be isolated from the instance list.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`
}

type IsolateDBInstanceRequest struct {
	*tchttp.BaseRequest
	
	// Instance ID. Log in to the [TencentDB for MongoDB console](https://console.cloud.tencent.com/mongodb), and copy the ID of the instance to be isolated from the instance list.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`
}

func (r *IsolateDBInstanceRequest) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *IsolateDBInstanceRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "InstanceId")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "IsolateDBInstanceRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type IsolateDBInstanceResponseParams struct {
	// Async task request ID, which can be used to query the execution result of an async task.
	AsyncRequestId *string `json:"AsyncRequestId,omitnil,omitempty" name:"AsyncRequestId"`

	// The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
	RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"`
}

type IsolateDBInstanceResponse struct {
	*tchttp.BaseResponse
	Response *IsolateDBInstanceResponseParams `json:"Response"`
}

func (r *IsolateDBInstanceResponse) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *IsolateDBInstanceResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

type LogInfo struct {
	// Log category.
	// Note: This field may return null, indicating that no valid values can be obtained.
	LogComponent *string `json:"LogComponent,omitnil,omitempty" name:"LogComponent"`

	// Log level.
	// Note: This field may return null, indicating that no valid values can be obtained.
	LogLevel *string `json:"LogLevel,omitnil,omitempty" name:"LogLevel"`

	// Log generation time.
	// Note: This field may return null, indicating that no valid values can be obtained.
	LogTime *string `json:"LogTime,omitnil,omitempty" name:"LogTime"`

	// Log details.
	// Note: This field may return null, indicating that no valid values can be obtained.
	LogDetail *string `json:"LogDetail,omitnil,omitempty" name:"LogDetail"`

	// Log connection information.
	// Note: This field may return null, indicating that no valid values can be obtained.
	LogConnection *string `json:"LogConnection,omitnil,omitempty" name:"LogConnection"`

	// Log ID.
	// Note: This field may return null, indicating that no valid values can be obtained.
	LogId *string `json:"LogId,omitnil,omitempty" name:"LogId"`
}

// Predefined struct for user
type ModifyDBInstanceNetworkAddressRequestParams struct {
	// Specifies the ID of the instance for modifying the network. For example, cmgo-p8vn****. Log in to the [TencentDB for MongoDB console](https://console.cloud.tencent.com/MongoDB) and copy the instance ID from the instance list.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Retention period of the original IP address.
	//  - Unit: minutes. 0 means that the IP address is immediately repossessed.
	//  - The original IP address will be released after a scheduled period. Both the original and new IP addresses are accessible before release.
	OldIpExpiredTime *uint64 `json:"OldIpExpiredTime,omitnil,omitempty" name:"OldIpExpiredTime"`

	// VPC ID after the switch. If the instance is using a basic network, this field is not required. The [DescribeDBInstances](https://www.tencentcloud.comom/document/product/240/38568?from_cn_redirect=1) API can be called to obtain the VPC ID.
	NewUniqVpcId *string `json:"NewUniqVpcId,omitnil,omitempty" name:"NewUniqVpcId"`

	// VPC subnet ID after the switch. If the instance is using a basic network, this field is not required. The [DescribeDBInstances](https://www.tencentcloud.comom/document/product/240/38568?from_cn_redirect=1) API can be called to obtain the subnet ID of the VPC.
	NewUniqSubnetId *string `json:"NewUniqSubnetId,omitnil,omitempty" name:"NewUniqSubnetId"`

	// IP address information, including the new IP address and the original IP address.
	NetworkAddresses []*ModifyNetworkAddress `json:"NetworkAddresses,omitnil,omitempty" name:"NetworkAddresses"`
}

type ModifyDBInstanceNetworkAddressRequest struct {
	*tchttp.BaseRequest
	
	// Specifies the ID of the instance for modifying the network. For example, cmgo-p8vn****. Log in to the [TencentDB for MongoDB console](https://console.cloud.tencent.com/MongoDB) and copy the instance ID from the instance list.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Retention period of the original IP address.
	//  - Unit: minutes. 0 means that the IP address is immediately repossessed.
	//  - The original IP address will be released after a scheduled period. Both the original and new IP addresses are accessible before release.
	OldIpExpiredTime *uint64 `json:"OldIpExpiredTime,omitnil,omitempty" name:"OldIpExpiredTime"`

	// VPC ID after the switch. If the instance is using a basic network, this field is not required. The [DescribeDBInstances](https://www.tencentcloud.comom/document/product/240/38568?from_cn_redirect=1) API can be called to obtain the VPC ID.
	NewUniqVpcId *string `json:"NewUniqVpcId,omitnil,omitempty" name:"NewUniqVpcId"`

	// VPC subnet ID after the switch. If the instance is using a basic network, this field is not required. The [DescribeDBInstances](https://www.tencentcloud.comom/document/product/240/38568?from_cn_redirect=1) API can be called to obtain the subnet ID of the VPC.
	NewUniqSubnetId *string `json:"NewUniqSubnetId,omitnil,omitempty" name:"NewUniqSubnetId"`

	// IP address information, including the new IP address and the original IP address.
	NetworkAddresses []*ModifyNetworkAddress `json:"NetworkAddresses,omitnil,omitempty" name:"NetworkAddresses"`
}

func (r *ModifyDBInstanceNetworkAddressRequest) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *ModifyDBInstanceNetworkAddressRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "InstanceId")
	delete(f, "OldIpExpiredTime")
	delete(f, "NewUniqVpcId")
	delete(f, "NewUniqSubnetId")
	delete(f, "NetworkAddresses")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "ModifyDBInstanceNetworkAddressRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type ModifyDBInstanceNetworkAddressResponseParams struct {
	// ID of the asynchronous process task for modifying the network information.
	FlowId *uint64 `json:"FlowId,omitnil,omitempty" name:"FlowId"`

	// The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
	RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"`
}

type ModifyDBInstanceNetworkAddressResponse struct {
	*tchttp.BaseResponse
	Response *ModifyDBInstanceNetworkAddressResponseParams `json:"Response"`
}

func (r *ModifyDBInstanceNetworkAddressResponse) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *ModifyDBInstanceNetworkAddressResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type ModifyDBInstanceSecurityGroupRequestParams struct {
	// Instance ID. Log in to the [TencentDB for MongoDB console](https://console.cloud.tencent.com/mongodb), and copy the instance ID from the instance list.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Target security group ID. Log in to the [security group console](https://console.cloud.tencent.com/vpc/security-group) page to copy the target security group ID.
	// **Note**: This input parameter performs a full replacement on all existing collections but not an incremental update. To modify it, import the expected full collections.
	SecurityGroupIds []*string `json:"SecurityGroupIds,omitnil,omitempty" name:"SecurityGroupIds"`
}

type ModifyDBInstanceSecurityGroupRequest struct {
	*tchttp.BaseRequest
	
	// Instance ID. Log in to the [TencentDB for MongoDB console](https://console.cloud.tencent.com/mongodb), and copy the instance ID from the instance list.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Target security group ID. Log in to the [security group console](https://console.cloud.tencent.com/vpc/security-group) page to copy the target security group ID.
	// **Note**: This input parameter performs a full replacement on all existing collections but not an incremental update. To modify it, import the expected full collections.
	SecurityGroupIds []*string `json:"SecurityGroupIds,omitnil,omitempty" name:"SecurityGroupIds"`
}

func (r *ModifyDBInstanceSecurityGroupRequest) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *ModifyDBInstanceSecurityGroupRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "InstanceId")
	delete(f, "SecurityGroupIds")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "ModifyDBInstanceSecurityGroupRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type ModifyDBInstanceSecurityGroupResponseParams struct {
	// The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
	RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"`
}

type ModifyDBInstanceSecurityGroupResponse struct {
	*tchttp.BaseResponse
	Response *ModifyDBInstanceSecurityGroupResponseParams `json:"Response"`
}

func (r *ModifyDBInstanceSecurityGroupResponse) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *ModifyDBInstanceSecurityGroupResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type ModifyDBInstanceSpecRequestParams struct {
	// Instance ID. Log in to the [TencentDB for MongoDB console](https://console.cloud.tencent.com/mongodb), and copy the instance ID from the instance list.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Memory size after instance configuration changes, in GB. If this parameter is left blank, the default value is the current memory size of the instance. For the currently supported memory specifications, see [Product Specifications](https://www.tencentcloud.comom/document/product/240/64125?from_cn_redirect=1).
	// **Note**: Memory and disk configurations should be upgraded or downgraded simultaneously, meaning that Memory and Volume should be modified at the same time.
	Memory *uint64 `json:"Memory,omitnil,omitempty" name:"Memory"`

	// Hard disk size after instance configuration changes, in GB. If this parameter is left blank, the default value is the current disk size of the instance. For the currently supported disk capacity, see [Product Specifications](https://www.tencentcloud.comom/document/product/240/64125?from_cn_redirect=1).
	// - Memory and disk configurations should be upgraded or downgraded at the same time, meaning that Memory and Volume should be modified at the same time.
	// - During configuration downgrade, the disk capacity after changes should be greater than 1.2 times the used disk capacity.
	Volume *uint64 `json:"Volume,omitnil,omitempty" name:"Volume"`

	// (Deprecated) Use the independent API ResizeOplog.
	// 
	// Oplog size after instance configuration modification.
	//  - Unit: GB.
	//  - By default, the capacity occupied by Oplog is 10% of the disk capacity. The range of capacity occupied by Oplog supported by the system is [10%,90%] of the disk capacity.
	//
	// Deprecated: OplogSize is deprecated.
	OplogSize *uint64 `json:"OplogSize,omitnil,omitempty" name:"OplogSize"`

	// Number of Mongod nodes after instance changes (excluding read-only nodes).
	// - Number of replica set nodes. The value range of the number of nodes can be obtained through the response parameters MinNodeNum and MaxNodeNum of the [DescribeSpecInfo ](https://www.tencentcloud.comom/document/product/240/38567?from_cn_redirect=1) API.
	// - Number of nodes per shard in a sharded cluster. The value range of the number of nodes can be obtained through the response parameters MinReplicateSetNodeNum and MaxReplicateSetNodeNum of the [DescribeSpecInfo ](https://www.tencentcloud.comom/document/product/240/38567?from_cn_redirect=1) API.
	// **Note**: When the CPU and memory specifications of Mongod or Mongos nodes are changed, this parameter is not required, or enter the current number of Mongod or Mongos nodes (excluding read-only nodes).
	NodeNum *uint64 `json:"NodeNum,omitnil,omitempty" name:"NodeNum"`

	// Number of shards after instance changes.
	// - The value range for the number of instance shards can be obtained through the response parameters **MinReplicateSetNum** and **MaxReplicateSetNum** of the [DescribeSpecInfo](https://www.tencentcloud.comom/document/product/240/38567?from_cn_redirect=1) API.
	// - The number of instance shards can only be increased and cannot be decreased.
	ReplicateSetNum *uint64 `json:"ReplicateSetNum,omitnil,omitempty" name:"ReplicateSetNum"`

	// Switch time for instance configuration modification.
	//  - 0: Execute the configuration modification task immediately after the adjustment is completed. Default value: 0.
	//  - 1: Execute the configuration modification task within the maintenance window.
	// **Note**: Adjusting the number of nodes and shards is unsupported <b>within the maintenance window</b>.
	InMaintenance *uint64 `json:"InMaintenance,omitnil,omitempty" name:"InMaintenance"`

	// Memory size of the Mongos node after sharded cluster instance configuration changes, in GB. For the specifications supported by the instance, see [Product Specifications](https://www.tencentcloud.comom/document/product/240/64125?from_cn_redirect=1).
	MongosMemory *string `json:"MongosMemory,omitnil,omitempty" name:"MongosMemory"`

	// List of nodes to be added, containing the node type and AZ information.
	AddNodeList []*AddNodeList `json:"AddNodeList,omitnil,omitempty" name:"AddNodeList"`

	// Deletes the node list.
	// **Note**: According to the consistency principle for nodes of each shard on a sharded cluster instance, specify the nodes on shard 0 for node deletion from the sharded cluster instance. For example, cmgo-9nl1czif_0-node-readonly0 will delete the first read-only node of each shard.
	RemoveNodeList []*RemoveNodeList `json:"RemoveNodeList,omitnil,omitempty" name:"RemoveNodeList"`
}

type ModifyDBInstanceSpecRequest struct {
	*tchttp.BaseRequest
	
	// Instance ID. Log in to the [TencentDB for MongoDB console](https://console.cloud.tencent.com/mongodb), and copy the instance ID from the instance list.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Memory size after instance configuration changes, in GB. If this parameter is left blank, the default value is the current memory size of the instance. For the currently supported memory specifications, see [Product Specifications](https://www.tencentcloud.comom/document/product/240/64125?from_cn_redirect=1).
	// **Note**: Memory and disk configurations should be upgraded or downgraded simultaneously, meaning that Memory and Volume should be modified at the same time.
	Memory *uint64 `json:"Memory,omitnil,omitempty" name:"Memory"`

	// Hard disk size after instance configuration changes, in GB. If this parameter is left blank, the default value is the current disk size of the instance. For the currently supported disk capacity, see [Product Specifications](https://www.tencentcloud.comom/document/product/240/64125?from_cn_redirect=1).
	// - Memory and disk configurations should be upgraded or downgraded at the same time, meaning that Memory and Volume should be modified at the same time.
	// - During configuration downgrade, the disk capacity after changes should be greater than 1.2 times the used disk capacity.
	Volume *uint64 `json:"Volume,omitnil,omitempty" name:"Volume"`

	// (Deprecated) Use the independent API ResizeOplog.
	// 
	// Oplog size after instance configuration modification.
	//  - Unit: GB.
	//  - By default, the capacity occupied by Oplog is 10% of the disk capacity. The range of capacity occupied by Oplog supported by the system is [10%,90%] of the disk capacity.
	OplogSize *uint64 `json:"OplogSize,omitnil,omitempty" name:"OplogSize"`

	// Number of Mongod nodes after instance changes (excluding read-only nodes).
	// - Number of replica set nodes. The value range of the number of nodes can be obtained through the response parameters MinNodeNum and MaxNodeNum of the [DescribeSpecInfo ](https://www.tencentcloud.comom/document/product/240/38567?from_cn_redirect=1) API.
	// - Number of nodes per shard in a sharded cluster. The value range of the number of nodes can be obtained through the response parameters MinReplicateSetNodeNum and MaxReplicateSetNodeNum of the [DescribeSpecInfo ](https://www.tencentcloud.comom/document/product/240/38567?from_cn_redirect=1) API.
	// **Note**: When the CPU and memory specifications of Mongod or Mongos nodes are changed, this parameter is not required, or enter the current number of Mongod or Mongos nodes (excluding read-only nodes).
	NodeNum *uint64 `json:"NodeNum,omitnil,omitempty" name:"NodeNum"`

	// Number of shards after instance changes.
	// - The value range for the number of instance shards can be obtained through the response parameters **MinReplicateSetNum** and **MaxReplicateSetNum** of the [DescribeSpecInfo](https://www.tencentcloud.comom/document/product/240/38567?from_cn_redirect=1) API.
	// - The number of instance shards can only be increased and cannot be decreased.
	ReplicateSetNum *uint64 `json:"ReplicateSetNum,omitnil,omitempty" name:"ReplicateSetNum"`

	// Switch time for instance configuration modification.
	//  - 0: Execute the configuration modification task immediately after the adjustment is completed. Default value: 0.
	//  - 1: Execute the configuration modification task within the maintenance window.
	// **Note**: Adjusting the number of nodes and shards is unsupported <b>within the maintenance window</b>.
	InMaintenance *uint64 `json:"InMaintenance,omitnil,omitempty" name:"InMaintenance"`

	// Memory size of the Mongos node after sharded cluster instance configuration changes, in GB. For the specifications supported by the instance, see [Product Specifications](https://www.tencentcloud.comom/document/product/240/64125?from_cn_redirect=1).
	MongosMemory *string `json:"MongosMemory,omitnil,omitempty" name:"MongosMemory"`

	// List of nodes to be added, containing the node type and AZ information.
	AddNodeList []*AddNodeList `json:"AddNodeList,omitnil,omitempty" name:"AddNodeList"`

	// Deletes the node list.
	// **Note**: According to the consistency principle for nodes of each shard on a sharded cluster instance, specify the nodes on shard 0 for node deletion from the sharded cluster instance. For example, cmgo-9nl1czif_0-node-readonly0 will delete the first read-only node of each shard.
	RemoveNodeList []*RemoveNodeList `json:"RemoveNodeList,omitnil,omitempty" name:"RemoveNodeList"`
}

func (r *ModifyDBInstanceSpecRequest) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *ModifyDBInstanceSpecRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "InstanceId")
	delete(f, "Memory")
	delete(f, "Volume")
	delete(f, "OplogSize")
	delete(f, "NodeNum")
	delete(f, "ReplicateSetNum")
	delete(f, "InMaintenance")
	delete(f, "MongosMemory")
	delete(f, "AddNodeList")
	delete(f, "RemoveNodeList")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "ModifyDBInstanceSpecRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type ModifyDBInstanceSpecResponseParams struct {
	// Order ID.
	DealId *string `json:"DealId,omitnil,omitempty" name:"DealId"`

	// The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
	RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"`
}

type ModifyDBInstanceSpecResponse struct {
	*tchttp.BaseResponse
	Response *ModifyDBInstanceSpecResponseParams `json:"Response"`
}

func (r *ModifyDBInstanceSpecResponse) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *ModifyDBInstanceSpecResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

type ModifyNetworkAddress struct {
	// New IP
	NewIPAddress *string `json:"NewIPAddress,omitnil,omitempty" name:"NewIPAddress"`

	// Old IP
	OldIpAddress *string `json:"OldIpAddress,omitnil,omitempty" name:"OldIpAddress"`
}

type NodeProperty struct {
	// Node AZ.
	Zone *string `json:"Zone,omitnil,omitempty" name:"Zone"`

	// Node name.
	NodeName *string `json:"NodeName,omitnil,omitempty" name:"NodeName"`

	// Node access address.
	Address *string `json:"Address,omitnil,omitempty" name:"Address"`

	// Public network access address (IP address or domain name) of the node. The example value is an IP address.
	WanServiceAddress *string `json:"WanServiceAddress,omitnil,omitempty" name:"WanServiceAddress"`

	// Node role.
	// - PRIMARY: primary node.
	// - SECONDARY: secondary node.
	// - READONLY: read-only node.
	// - ARBITER: arbitration node.
	Role *string `json:"Role,omitnil,omitempty" name:"Role"`

	// Whether the node is a hidden node.
	// - true: a hidden node.
	// - false: not a hidden node.
	Hidden *bool `json:"Hidden,omitnil,omitempty" name:"Hidden"`

	// Node status.
	// - NORMAL: running normally.
	// - STARTUP: starting.
	// - STARTUP2: starting and processing the intermediate data.
	// - RECOVERING: recovering and not available.
	// - DOWN: offline.
	// - UNKNOWN: unknown status.
	// - ROLLBACK: rolling back.
	// - REMOVED: removed.
	Status *string `json:"Status,omitnil,omitempty" name:"Status"`

	// Delay time of primary-secondary synchronization, in seconds.
	SlaveDelay *int64 `json:"SlaveDelay,omitnil,omitempty" name:"SlaveDelay"`

	// Node priority. Value range: [0, 100]. A larger value indicates a higher priority.
	Priority *int64 `json:"Priority,omitnil,omitempty" name:"Priority"`

	// Node voting right.
	// - 1: The node has the right to vote.
	// - 0: The node does not have the right to vote.
	Votes *int64 `json:"Votes,omitnil,omitempty" name:"Votes"`

	// Node tag.
	// Note: This field may return null, indicating that no valid values can be obtained.
	Tags []*NodeTag `json:"Tags,omitnil,omitempty" name:"Tags"`

	// Replica set ID.
	ReplicateSetId *string `json:"ReplicateSetId,omitnil,omitempty" name:"ReplicateSetId"`
}

type NodeTag struct {
	// Node tag key.
	TagKey *string `json:"TagKey,omitnil,omitempty" name:"TagKey"`

	// Node tag value.
	TagValue *string `json:"TagValue,omitnil,omitempty" name:"TagValue"`
}

// Predefined struct for user
type OfflineIsolatedDBInstanceRequestParams struct {
	// Instance ID. Log in to the [TencentDB for MongoDB console recycle bin](https://console.cloud.tencent.com/mongodb/recycle), and copy the ID of the instance to be eliminated from the instance list.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`
}

type OfflineIsolatedDBInstanceRequest struct {
	*tchttp.BaseRequest
	
	// Instance ID. Log in to the [TencentDB for MongoDB console recycle bin](https://console.cloud.tencent.com/mongodb/recycle), and copy the ID of the instance to be eliminated from the instance list.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`
}

func (r *OfflineIsolatedDBInstanceRequest) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *OfflineIsolatedDBInstanceRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "InstanceId")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "OfflineIsolatedDBInstanceRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type OfflineIsolatedDBInstanceResponseParams struct {
	// Async task request ID, which can be used to query the execution result of an async task.
	AsyncRequestId *string `json:"AsyncRequestId,omitnil,omitempty" name:"AsyncRequestId"`

	// The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
	RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"`
}

type OfflineIsolatedDBInstanceResponse struct {
	*tchttp.BaseResponse
	Response *OfflineIsolatedDBInstanceResponseParams `json:"Response"`
}

func (r *OfflineIsolatedDBInstanceResponse) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *OfflineIsolatedDBInstanceResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

type RemoveNodeList struct {
	// Roles of nodes to be deleted.
	//  - SECONDARY: Mongod secondary node.
	//  - READONLY: read-only node.
	//  - MONGOS: Mongos node.
	Role *string `json:"Role,omitnil,omitempty" name:"Role"`

	// IDs of nodes to be deleted. For a sharded cluster instance, specify the names of nodes to be deleted on one shard. Nodes with the same names on other shards will also be deleted.
	// - Obtaining method: Log in to the [TencentDB for MongoDB console](https://console.cloud.tencent.com/mongodb), go to the **Node Management** tab, and obtain the **node ID**.
	// - Note: For a sharded cluster instance, specify the IDs of nodes on shard 0. For example, cmgo-6hfk\*\*\*\*\_0-node-primary.
	NodeName *string `json:"NodeName,omitnil,omitempty" name:"NodeName"`

	// AZ corresponding to the node. For the currently supported AZs, see [Regions and AZs](https://www.tencentcloud.comom/document/product/240/3637?from_cn_redirect=1).
	// - Single AZ: all nodes are in the same AZ.
	// - Multiple AZs: The current standard specification involves three AZs. The primary and secondary nodes are not in the same AZ. Note: AZs corresponding to the nodes to be deleted should be specified. After deletion, the number of nodes in any 2 AZs should be larger than that in the third AZ.
	Zone *string `json:"Zone,omitnil,omitempty" name:"Zone"`
}

// Predefined struct for user
type RenameInstanceRequestParams struct {
	// Instance ID. Format: cmgo-p8vnipr5. Log in to the [TencentDB for MongoDB console](https://console.cloud.tencent.com/MongoDB#/) and copy the instance ID from the instance list.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Custom instance name. It can contain any character, with a length from 1 to 128 characters.
	NewName *string `json:"NewName,omitnil,omitempty" name:"NewName"`
}

type RenameInstanceRequest struct {
	*tchttp.BaseRequest
	
	// Instance ID. Format: cmgo-p8vnipr5. Log in to the [TencentDB for MongoDB console](https://console.cloud.tencent.com/MongoDB#/) and copy the instance ID from the instance list.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Custom instance name. It can contain any character, with a length from 1 to 128 characters.
	NewName *string `json:"NewName,omitnil,omitempty" name:"NewName"`
}

func (r *RenameInstanceRequest) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *RenameInstanceRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "InstanceId")
	delete(f, "NewName")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "RenameInstanceRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type RenameInstanceResponseParams struct {
	// The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
	RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"`
}

type RenameInstanceResponse struct {
	*tchttp.BaseResponse
	Response *RenameInstanceResponseParams `json:"Response"`
}

func (r *RenameInstanceResponse) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *RenameInstanceResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type RenewDBInstancesRequestParams struct {
	// Specifies the ID or IDs of one or multiple instances to be renewed.
	// - It can be obtained through the response parameter **InstanceId** of the [DescribeDBInstances](https://www.tencentcloud.comom/document/product/240/38568?from_cn_redirect=1) API.
	// - The maximum number of instances for each renewal request is 100.
	InstanceIds []*string `json:"InstanceIds,omitnil,omitempty" name:"InstanceIds"`

	// The parameter setting for the prepaid mode (monthly subscription mode). This parameter can specify the renewal period, whether to set automatic renewal, and other attributes of the monthly subscription instance. This parameter is mandatory in monthly subscription.
	InstanceChargePrepaid *InstanceChargePrepaid `json:"InstanceChargePrepaid,omitnil,omitempty" name:"InstanceChargePrepaid"`
}

type RenewDBInstancesRequest struct {
	*tchttp.BaseRequest
	
	// Specifies the ID or IDs of one or multiple instances to be renewed.
	// - It can be obtained through the response parameter **InstanceId** of the [DescribeDBInstances](https://www.tencentcloud.comom/document/product/240/38568?from_cn_redirect=1) API.
	// - The maximum number of instances for each renewal request is 100.
	InstanceIds []*string `json:"InstanceIds,omitnil,omitempty" name:"InstanceIds"`

	// The parameter setting for the prepaid mode (monthly subscription mode). This parameter can specify the renewal period, whether to set automatic renewal, and other attributes of the monthly subscription instance. This parameter is mandatory in monthly subscription.
	InstanceChargePrepaid *InstanceChargePrepaid `json:"InstanceChargePrepaid,omitnil,omitempty" name:"InstanceChargePrepaid"`
}

func (r *RenewDBInstancesRequest) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *RenewDBInstancesRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "InstanceIds")
	delete(f, "InstanceChargePrepaid")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "RenewDBInstancesRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type RenewDBInstancesResponseParams struct {
	// The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
	RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"`
}

type RenewDBInstancesResponse struct {
	*tchttp.BaseResponse
	Response *RenewDBInstancesResponseParams `json:"Response"`
}

func (r *RenewDBInstancesResponse) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *RenewDBInstancesResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

type ReplicaSetInfo struct {
	// Replica set ID.
	ReplicaSetId *string `json:"ReplicaSetId,omitnil,omitempty" name:"ReplicaSetId"`
}

type ReplicateSetInfo struct {
	// Node attributes.
	Nodes []*NodeProperty `json:"Nodes,omitnil,omitempty" name:"Nodes"`
}

// Predefined struct for user
type ResetDBInstancePasswordRequestParams struct {
	// Specifies the instance ID. Log in to the [TencentDB for MongoDB console](https://console.cloud.tencent.com/mongodb), and copy the instance ID from the instance list.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Specifies the account name for which the password needs to be changed. The [DescribeAccountUsers](https://www.tencentcloud.comom/document/product/240/80800?from_cn_redirect=1) API can be called to obtain the account list and copy the account name for which the password needs to be changed.
	UserName *string `json:"UserName,omitnil,omitempty" name:"UserName"`

	// Specifies a new password for the account. Password complexity requirements:
	// - It should contain 8–32 characters.
	// - It should contain at least two types of the following: letters, digits, and special characters (!@#%^\*()\_).
	Password *string `json:"Password,omitnil,omitempty" name:"Password"`
}

type ResetDBInstancePasswordRequest struct {
	*tchttp.BaseRequest
	
	// Specifies the instance ID. Log in to the [TencentDB for MongoDB console](https://console.cloud.tencent.com/mongodb), and copy the instance ID from the instance list.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Specifies the account name for which the password needs to be changed. The [DescribeAccountUsers](https://www.tencentcloud.comom/document/product/240/80800?from_cn_redirect=1) API can be called to obtain the account list and copy the account name for which the password needs to be changed.
	UserName *string `json:"UserName,omitnil,omitempty" name:"UserName"`

	// Specifies a new password for the account. Password complexity requirements:
	// - It should contain 8–32 characters.
	// - It should contain at least two types of the following: letters, digits, and special characters (!@#%^\*()\_).
	Password *string `json:"Password,omitnil,omitempty" name:"Password"`
}

func (r *ResetDBInstancePasswordRequest) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *ResetDBInstancePasswordRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "InstanceId")
	delete(f, "UserName")
	delete(f, "Password")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "ResetDBInstancePasswordRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type ResetDBInstancePasswordResponseParams struct {
	// Task request ID.
	AsyncRequestId *string `json:"AsyncRequestId,omitnil,omitempty" name:"AsyncRequestId"`

	// The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
	RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"`
}

type ResetDBInstancePasswordResponse struct {
	*tchttp.BaseResponse
	Response *ResetDBInstancePasswordResponseParams `json:"Response"`
}

func (r *ResetDBInstancePasswordResponse) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *ResetDBInstancePasswordResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

type SecurityGroup struct {
	// Associated project ID.
	ProjectId *int64 `json:"ProjectId,omitnil,omitempty" name:"ProjectId"`

	// Security group creation time.
	CreateTime *string `json:"CreateTime,omitnil,omitempty" name:"CreateTime"`

	// Security group inbound rule.
	Inbound []*SecurityGroupBound `json:"Inbound,omitnil,omitempty" name:"Inbound"`

	// Security group outbound rule.
	Outbound []*SecurityGroupBound `json:"Outbound,omitnil,omitempty" name:"Outbound"`

	// Security group ID.
	SecurityGroupId *string `json:"SecurityGroupId,omitnil,omitempty" name:"SecurityGroupId"`

	// Security group name.
	SecurityGroupName *string `json:"SecurityGroupName,omitnil,omitempty" name:"SecurityGroupName"`

	// Security group remarks.
	SecurityGroupRemark *string `json:"SecurityGroupRemark,omitnil,omitempty" name:"SecurityGroupRemark"`
}

type SecurityGroupBound struct {
	// Execution policy.
	// - ACCEPT: allow. Access requests for the port can be released.
	// - DROP: reject. Data packets are discarded without any response.
	Action *string `json:"Action,omitnil,omitempty" name:"Action"`

	// Inbound IP address or IP range for database access.
	CidrIp *string `json:"CidrIp,omitnil,omitempty" name:"CidrIp"`

	// Port for database access.
	PortRange *string `json:"PortRange,omitnil,omitempty" name:"PortRange"`

	// Transport layer protocol: TCP.
	IpProtocol *string `json:"IpProtocol,omitnil,omitempty" name:"IpProtocol"`

	// Security group ID.
	Id *string `json:"Id,omitnil,omitempty" name:"Id"`

	// Parameter template ID for the IP address or IP address group. Log in to the [parameter template console](https://console.cloud.tencent.com/vpc/template/ip) to obtain the parameter template IP address details.
	AddressModule *string `json:"AddressModule,omitnil,omitempty" name:"AddressModule"`

	// Parameter template ID for the protocol port or protocol port group. Log in to the [parameter template console](https://console.cloud.tencent.com/vpc/template/protoport) to obtain the parameter template protocol port details.
	ServiceModule *string `json:"ServiceModule,omitnil,omitempty" name:"ServiceModule"`

	// Security group description information.
	Desc *string `json:"Desc,omitnil,omitempty" name:"Desc"`
}

// Predefined struct for user
type SetDBInstanceDeletionProtectionRequestParams struct {
	// Instance ID list, in the format of cmgo-p8vnipr5. It is the same as the format of the instance ID displayed on the TencentDB for MongoDB console page.
	InstanceIds []*string `json:"InstanceIds,omitnil,omitempty" name:"InstanceIds"`

	// Instance termination protection switch. Valid values: 0 - disabled; 1 - enabled.
	EnableDeletionProtection *uint64 `json:"EnableDeletionProtection,omitnil,omitempty" name:"EnableDeletionProtection"`
}

type SetDBInstanceDeletionProtectionRequest struct {
	*tchttp.BaseRequest
	
	// Instance ID list, in the format of cmgo-p8vnipr5. It is the same as the format of the instance ID displayed on the TencentDB for MongoDB console page.
	InstanceIds []*string `json:"InstanceIds,omitnil,omitempty" name:"InstanceIds"`

	// Instance termination protection switch. Valid values: 0 - disabled; 1 - enabled.
	EnableDeletionProtection *uint64 `json:"EnableDeletionProtection,omitnil,omitempty" name:"EnableDeletionProtection"`
}

func (r *SetDBInstanceDeletionProtectionRequest) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *SetDBInstanceDeletionProtectionRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "InstanceIds")
	delete(f, "EnableDeletionProtection")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "SetDBInstanceDeletionProtectionRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type SetDBInstanceDeletionProtectionResponseParams struct {
	// The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
	RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"`
}

type SetDBInstanceDeletionProtectionResponse struct {
	*tchttp.BaseResponse
	Response *SetDBInstanceDeletionProtectionResponseParams `json:"Response"`
}

func (r *SetDBInstanceDeletionProtectionResponse) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *SetDBInstanceDeletionProtectionResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

type ShardInfo struct {
	// Used shard capacity
	UsedVolume *float64 `json:"UsedVolume,omitnil,omitempty" name:"UsedVolume"`

	// Shard ID
	ReplicaSetId *string `json:"ReplicaSetId,omitnil,omitempty" name:"ReplicaSetId"`

	// Shard name
	ReplicaSetName *string `json:"ReplicaSetName,omitnil,omitempty" name:"ReplicaSetName"`

	// Shard memory size in MB
	Memory *uint64 `json:"Memory,omitnil,omitempty" name:"Memory"`

	// Shard disk size in MB
	Volume *uint64 `json:"Volume,omitnil,omitempty" name:"Volume"`

	// Shard oplog size in MB
	OplogSize *uint64 `json:"OplogSize,omitnil,omitempty" name:"OplogSize"`

	// Number of secondary nodes of a shard
	SecondaryNum *uint64 `json:"SecondaryNum,omitnil,omitempty" name:"SecondaryNum"`

	// Shard physical ID
	RealReplicaSetId *string `json:"RealReplicaSetId,omitnil,omitempty" name:"RealReplicaSetId"`
}

type SlowLogItem struct {
	// Slow log details.
	Log *string `json:"Log,omitnil,omitempty" name:"Log"`

	// Node name.
	NodeName *string `json:"NodeName,omitnil,omitempty" name:"NodeName"`

	// Queries the hash value.
	QueryHash *string `json:"QueryHash,omitnil,omitempty" name:"QueryHash"`
}

type SlowLogPattern struct {
	// Slow log output format: database name.table name.command.
	Pattern *string `json:"Pattern,omitnil,omitempty" name:"Pattern"`

	// queryHash value carried during slow log recording. It can be used to identify a query type.
	QueryHash *string `json:"QueryHash,omitnil,omitempty" name:"QueryHash"`

	// Maximum execution time, in milliseconds.
	MaxTime *uint64 `json:"MaxTime,omitnil,omitempty" name:"MaxTime"`

	// Average execution time, in milliseconds.
	AverageTime *uint64 `json:"AverageTime,omitnil,omitempty" name:"AverageTime"`

	// Number of slow logs.
	Total *uint64 `json:"Total,omitnil,omitempty" name:"Total"`
}

type SpecItem struct {
	// Specification information identifier. Format: mongo.HIO10G.128G. It consists of three parts: node type, specification type, and memory specification.
	// - Node type: **mongo** indicates a Mongod node; **mongos** indicates a Mongos node; **cfgstr** indicates a ConfigServer node.
	// - Specification type: **HIO10G** indicates the general HIO 10GE type; **HCD** indicates the Cloud Disk Edition type.
	// - Memory specification, in GB. Valid values: 4, 8, 16, 32, 64, 128, 240, and 512. 128g indicates 128 GB.
	SpecCode *string `json:"SpecCode,omitnil,omitempty" name:"SpecCode"`

	// Saleable specification status flag. Valid values are as follows:
	//  - 0: selling stopped.
	//  - 1: available for sale.
	Status *uint64 `json:"Status,omitnil,omitempty" name:"Status"`

	// Computing resource specification, indicating the number of CPU cores.
	Cpu *uint64 `json:"Cpu,omitnil,omitempty" name:"Cpu"`

	// Memory specification. Unit: MB.
	Memory *uint64 `json:"Memory,omitnil,omitempty" name:"Memory"`

	// Default disk specification. Unit: MB.
	DefaultStorage *uint64 `json:"DefaultStorage,omitnil,omitempty" name:"DefaultStorage"`

	// Maximum disk specification. Unit: MB.
	MaxStorage *uint64 `json:"MaxStorage,omitnil,omitempty" name:"MaxStorage"`

	// Minimum disk specification. Unit: MB.
	MinStorage *uint64 `json:"MinStorage,omitnil,omitempty" name:"MinStorage"`

	// Maximum number of requests per second. Unit: requests/second.
	Qps *uint64 `json:"Qps,omitnil,omitempty" name:"Qps"`

	// Maximum number of connections supported for the specification.
	Conns *uint64 `json:"Conns,omitnil,omitempty" name:"Conns"`

	// Storage engine version information on instances.
	// - MONGO_40_WT: version of the MongoDB 4.0 WiredTiger storage engine.
	// - MONGO_42_WT: version of the MongoDB 4.2 WiredTiger storage engine.
	// - MONGO_44_WT: version of the MongoDB 4.4 WiredTiger storage engine.
	// - MONGO_50_WT: version of the MongoDB 5.0 WiredTiger storage engine.
	// - MONGO_60_WT: version of the MongoDB 6.0 WiredTiger storage engine.
	// - MONGO_70_WT: version of the MongoDB 7.0 WiredTiger storage engine.
	MongoVersionCode *string `json:"MongoVersionCode,omitnil,omitempty" name:"MongoVersionCode"`

	// Digital version corresponding to the instance version.
	MongoVersionValue *uint64 `json:"MongoVersionValue,omitnil,omitempty" name:"MongoVersionValue"`

	// Instance version information. Valid values: 4.2, 4.4, 5.0, 6.0, and 7.0.
	Version *string `json:"Version,omitnil,omitempty" name:"Version"`

	// Storage engine.
	EngineName *string `json:"EngineName,omitnil,omitempty" name:"EngineName"`

	// Cluster type. Valid values are as follows:
	//  - 1: sharded cluster.
	//  - 0: replica set cluster.
	ClusterType *uint64 `json:"ClusterType,omitnil,omitempty" name:"ClusterType"`

	// Minimum number of nodes for each replica set.
	MinNodeNum *uint64 `json:"MinNodeNum,omitnil,omitempty" name:"MinNodeNum"`

	// Maximum number of nodes for each replica set.
	MaxNodeNum *uint64 `json:"MaxNodeNum,omitnil,omitempty" name:"MaxNodeNum"`

	// Minimum number of shards.
	MinReplicateSetNum *uint64 `json:"MinReplicateSetNum,omitnil,omitempty" name:"MinReplicateSetNum"`

	// Maximum number of shards.
	MaxReplicateSetNum *uint64 `json:"MaxReplicateSetNum,omitnil,omitempty" name:"MaxReplicateSetNum"`

	// Minimum number of nodes for each shard.
	MinReplicateSetNodeNum *uint64 `json:"MinReplicateSetNodeNum,omitnil,omitempty" name:"MinReplicateSetNodeNum"`

	// Maximum number of nodes for each shard.
	MaxReplicateSetNodeNum *uint64 `json:"MaxReplicateSetNodeNum,omitnil,omitempty" name:"MaxReplicateSetNodeNum"`

	// Cluster specification type. Valid values are as follows:
	//  - HIO10G: general high-I/O 10GE type.
	//  - HCD: cloud disk type.
	MachineType *string `json:"MachineType,omitnil,omitempty" name:"MachineType"`
}

type SpecificationInfo struct {
	// Region information.
	Region *string `json:"Region,omitnil,omitempty" name:"Region"`

	// AZ information.
	Zone *string `json:"Zone,omitnil,omitempty" name:"Zone"`

	// Sales specification information.
	SpecItems []*SpecItem `json:"SpecItems,omitnil,omitempty" name:"SpecItems"`

	// Whether cross-AZ deployment is supported.
	// - 1: supported.
	// - 0: not supported.
	SupportMultiAZ *int64 `json:"SupportMultiAZ,omitnil,omitempty" name:"SupportMultiAZ"`
}

type TagInfo struct {
	// Tag key
	TagKey *string `json:"TagKey,omitnil,omitempty" name:"TagKey"`

	// Tag value
	TagValue *string `json:"TagValue,omitnil,omitempty" name:"TagValue"`
}

type Task struct {
	// Download task type. 0: slow log; 1: error log.
	TaskType *int64 `json:"TaskType,omitnil,omitempty" name:"TaskType"`

	// Task ID.
	TaskId *string `json:"TaskId,omitnil,omitempty" name:"TaskId"`

	// Creation time.
	// Note: This field may return null, indicating that no valid values can be obtained.
	CreateTime *string `json:"CreateTime,omitnil,omitempty" name:"CreateTime"`

	// Update time.
	// Note: This field may return null, indicating that no valid values can be obtained.
	UpdateTime *string `json:"UpdateTime,omitnil,omitempty" name:"UpdateTime"`

	// File size.
	// Note: This field may return null, indicating that no valid values can be obtained.
	FileSize *int64 `json:"FileSize,omitnil,omitempty" name:"FileSize"`

	// Task status. 0: initialized; 1: running; 2: successful; 3: failed.
	// Note: This field may return null, indicating that no valid values can be obtained.
	Status *int64 `json:"Status,omitnil,omitempty" name:"Status"`

	// Percentage.
	// Note: This field may return null, indicating that no valid values can be obtained.
	Percent *int64 `json:"Percent,omitnil,omitempty" name:"Percent"`

	// Download URL.
	// Note: This field may return null, indicating that no valid values can be obtained.
	Url *string `json:"Url,omitnil,omitempty" name:"Url"`
}

// Predefined struct for user
type TerminateDBInstancesRequestParams struct {
	// Specifies the ID of the pre-isolated instance. Log in to the [TencentDB for MongoDB console](https://console.cloud.tencent.com/mongodb), and copy the instance ID from the instance list.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`
}

type TerminateDBInstancesRequest struct {
	*tchttp.BaseRequest
	
	// Specifies the ID of the pre-isolated instance. Log in to the [TencentDB for MongoDB console](https://console.cloud.tencent.com/mongodb), and copy the instance ID from the instance list.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`
}

func (r *TerminateDBInstancesRequest) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *TerminateDBInstancesRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "InstanceId")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "TerminateDBInstancesRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type TerminateDBInstancesResponseParams struct {
	// The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
	RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"`
}

type TerminateDBInstancesResponse struct {
	*tchttp.BaseResponse
	Response *TerminateDBInstancesResponseParams `json:"Response"`
}

func (r *TerminateDBInstancesResponse) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *TerminateDBInstancesResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type UpgradeDBInstanceKernelVersionRequestParams struct {
	// List of instance IDs, which are in the format of cmgo-p8vnipr5. It is the same as the format of the instance ID displayed on the TencentDB for MongoDB console page.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Whether to perform the upgrade during the maintenance period. 0 - no; 1 - yes.
	InMaintenance *int64 `json:"InMaintenance,omitnil,omitempty" name:"InMaintenance"`
}

type UpgradeDBInstanceKernelVersionRequest struct {
	*tchttp.BaseRequest
	
	// List of instance IDs, which are in the format of cmgo-p8vnipr5. It is the same as the format of the instance ID displayed on the TencentDB for MongoDB console page.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Whether to perform the upgrade during the maintenance period. 0 - no; 1 - yes.
	InMaintenance *int64 `json:"InMaintenance,omitnil,omitempty" name:"InMaintenance"`
}

func (r *UpgradeDBInstanceKernelVersionRequest) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *UpgradeDBInstanceKernelVersionRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "InstanceId")
	delete(f, "InMaintenance")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "UpgradeDBInstanceKernelVersionRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type UpgradeDBInstanceKernelVersionResponseParams struct {
	// Asynchronous process task ID.
	FlowId *uint64 `json:"FlowId,omitnil,omitempty" name:"FlowId"`

	// The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
	RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"`
}

type UpgradeDBInstanceKernelVersionResponse struct {
	*tchttp.BaseResponse
	Response *UpgradeDBInstanceKernelVersionResponseParams `json:"Response"`
}

func (r *UpgradeDBInstanceKernelVersionResponse) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *UpgradeDBInstanceKernelVersionResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type UpgradeDbInstanceVersionRequestParams struct {
	// List of instance IDs, which are in the format of cmgo-p8vnipr5. It is the same as the format of the instance ID displayed on the TencentDB for MongoDB console page.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Newly upgraded database version. Currently, it only supports MONGO_40_WT (version of the MongoDB 4.0 WiredTiger storage engine) and MONGO_42_WT (version of the MongoDB 4.2 WiredTiger storage engine).
	MongoVersion *string `json:"MongoVersion,omitnil,omitempty" name:"MongoVersion"`

	// Whether to perform the upgrade during the maintenance period. 0 - upgrade now; 1 - upgrade during the maintenance period.
	InMaintenance *int64 `json:"InMaintenance,omitnil,omitempty" name:"InMaintenance"`
}

type UpgradeDbInstanceVersionRequest struct {
	*tchttp.BaseRequest
	
	// List of instance IDs, which are in the format of cmgo-p8vnipr5. It is the same as the format of the instance ID displayed on the TencentDB for MongoDB console page.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Newly upgraded database version. Currently, it only supports MONGO_40_WT (version of the MongoDB 4.0 WiredTiger storage engine) and MONGO_42_WT (version of the MongoDB 4.2 WiredTiger storage engine).
	MongoVersion *string `json:"MongoVersion,omitnil,omitempty" name:"MongoVersion"`

	// Whether to perform the upgrade during the maintenance period. 0 - upgrade now; 1 - upgrade during the maintenance period.
	InMaintenance *int64 `json:"InMaintenance,omitnil,omitempty" name:"InMaintenance"`
}

func (r *UpgradeDbInstanceVersionRequest) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *UpgradeDbInstanceVersionRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "InstanceId")
	delete(f, "MongoVersion")
	delete(f, "InMaintenance")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "UpgradeDbInstanceVersionRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type UpgradeDbInstanceVersionResponseParams struct {
	// Asynchronous process task ID.
	FlowId *uint64 `json:"FlowId,omitnil,omitempty" name:"FlowId"`

	// The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
	RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"`
}

type UpgradeDbInstanceVersionResponse struct {
	*tchttp.BaseResponse
	Response *UpgradeDbInstanceVersionResponseParams `json:"Response"`
}

func (r *UpgradeDbInstanceVersionResponse) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *UpgradeDbInstanceVersionResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}